【问题标题】:Amazon SQS "Receive Count" only increasingAmazon SQS“接收计数”只会增加
【发布时间】:2018-09-14 12:06:22
【问题描述】:

我是 Amazon SQS 的新手,但目前有些数字令人震惊。

我已将 Laravel 配置为对我的站点使用 Amazon SQS 发送的电子邮件消息进行排队(不使用作业,而只是通过扩展通知类 as per the documentation)。服务本身似乎运行良好。所有消息都出现在我的 AWS 账户的 SQS 队列中,但问题是队列似乎很大。

我找不到任何体面的教程或指南来解释如何阅读用简单英语编写的 SQS 屏幕,所以一切可能都很好。也就是说,我想确定一下。

考虑一下 SQS 当前所说的内容:

可用消息:300
飞行中的消息:4
消息延迟:0

当我在它首次上线时对其进行测试时,电子邮件会立即发送。 “可用消息”是空的,并且电子邮件到达我的收件箱没有问题。

如您所见,今天这个数字要高得多,而且似乎从未完全达到 0。除此之外,电子邮件还需要几个小时才能到达。

这正常吗?

我已经通过 SSH 连接到我的 Elastic Beanstalk 实例并环顾四周。我手动添加了五个运行php artisan queue:work 的后台进程,每个进程消耗约5% 的CPU。嗯。

如果我手动运行相同的命令(没有nohup),我会看到一个不断更新的列表:

[2018-04-04 20:09:59] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:09:59] 处理:App\Notifications\CompetitionVIP
[2018-04-04 20:10:00] 处理:App\Notifications\CompetitionVIP
[2018-04-04 20:10:00] 处理:App\Notifications\CompetitionVIP
[2018-04-04 20:10:00] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:00] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:00] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:02] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:02] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:02] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:02] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:02] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:02] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:03] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:03] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:03] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:03] 处理:App\Notifications\CompetitionAll
[2018-04-04 20:10:03] 处理:App\Notifications\CompetitionAll

只有每隔一段时间才会对 Processed 进行一次更改,大多数时候它是一个无穷无尽的黄色处理列表,每秒都在变化。

当我在 SQS 中查看消息时,我看到非常高的“接收计数”。有些高达21,000+

我知道总共可能只有大约 2000 个电子邮件请求,所以我不明白这个数字怎么会这么高。

这正常吗? Laravel 似乎没有删除已完成的请求。 (此外,似乎几乎不可能找到这些数字的解释......!)

任何帮助了解正在发生的事情将不胜感激!

【问题讨论】:

  • 您可以发布您的.env 文件和工作文件吗?看起来邮件已排队,但作业未正确分派。
  • 接收计数非常高。这通常代表处理过程中的一些错误,因此消息只是回到队列中。消息可见性超时也可能远低于处理消息所需的时间
  • @parthu_panther .env 文件显然是正确的,因为消息出现在 SQS 中。我没有工作文件,我只是使用通知类,根据文档:laravel.com/docs/5.5/notifications#queueing-notifications

标签: laravel amazon-web-services laravel-5 amazon-elastic-beanstalk amazon-sqs


【解决方案1】:

呃。看来问题只是一个愚蠢的问题:

我们的电子邮件递送提供商达到了每日限制。

一旦我们增加了限制,队列会在几分钟内清空。

我将把这个问题留在这里,以防它对其他人有所帮助。

【讨论】:

  • 不错的答案,让我崩溃了
  • 您好,感谢您回答这个问题。你能把事情弄清楚吗?接收计数是队列获得完全相同的消息有效负载的次数吗?这是否意味着在您的情况下,这条消息可能失败了 21,426 次?
  • @Stewart,这意味着消息被客户端“接收”,变为“不可见”,然后可见性超时到期,再次使消息可用的次数。
猜你喜欢
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 2013-10-17
  • 2018-11-22
  • 1970-01-01
  • 2019-03-25
  • 2014-09-26
相关资源
最近更新 更多