Laravel SQS Worker hangs



我正在运行一个处理sqs-fifo队列的工作线程,它在作业之间挂起(请参阅时间):

[2019-06-05 14:28:10] Processing: AppJobsMyAppMyJob
[2019-06-05 14:28:10] Processed:  AppJobsMyAppMyJob
[2019-06-05 14:28:23] Processing: AppJobsMyAppMyJob
[2019-06-05 14:28:23] Processed:  AppJobsMyAppMyJob
[2019-06-05 14:28:34] Processing: AppJobsMyAppMyJob
[2019-06-05 14:28:34] Processed:  AppJobsMyAppMyJob
[2019-06-05 14:28:34] Processing: AppJobsMyAppMyJob
[2019-06-05 14:28:35] Processed:  AppJobsMyAppMyJob
[2019-06-05 14:28:38] Processing: AppJobsMyAppMyJob
[2019-06-05 14:28:38] Processed:  AppJobsMyAppMyJob

我正在使用拉拉维尔-sqs-fifo-queue 驱动程序 知道什么会导致这种情况吗?

据我所知,没有什么能保证在处理完作业后,下一个作业会立即开始,没有延迟。 由于您的队列驱动程序是 sqs,因此您的队列侦听器需要通过互联网查询 Amazon 以获取要执行的下一个作业(下一个作业 + 序列化数据)所需的信息,因此您至少从侦听器完成作业的那一刻起就有网络延迟,直到它拥有处理下一个作业所需的信息。 在不会成为问题的多侦听器方案中,您可以假设由同一侦听器处理的作业之间存在一些延迟,因为其他侦听器将同时处理其他排队的作业,但恐怕如果您需要按顺序处理这些排队的作业,至少延迟是不可避免的。

此外,SQS 还与轮询一起工作,这意味着每隔 X 个切片,允许工作线程向 SQS 请求下一个排队作业进行处理(如果可用),因此您仍然固定在这些离散时间量。

我还在文档中看到可以设置每个队列DelaySeconds参数,因为我看到您的延迟似乎比前面提到的要大得多,我也会在我的配置中检查此参数。

最新更新