gpt4 book ai didi

php - 排队的 Laravel 通知卡在 AWS SQS 上

转载 作者:行者123 更新时间:2023-12-03 11:22:20 25 4
gpt4 key购买 nike

我在 AWS 上有一个工作人员处理排队的 Laravel 通知。一些通知被发送出去,但其他通知被困在队列中,我不知道为什么。
我查看了 Beanstalk 中的日志,看到了三种不同类型的错误:2020/11/03 09:22:34 [emerg] 10932#0: *30 malloc(4096) failed (12: Cannot allocate memory) while reading upstream, client: 127.0.0.1, server: , request: "POST /worker/queue HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock:", host: "localhost"我也在 Bugsnag 上看到内存不足问题,但没有任何堆栈跟踪。
另一个错误是这个:2020/11/02 14:50:07 [error] 10241#0: *2623 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 127.0.0.1, server: , request: "POST /worker/queue HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock", host: "localhost"这是最后一个:2020/11/02 15:00:24 [error] 10241#0: *2698 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: , request: "POST /worker/queue HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock:", host: "localhost"我真的不明白我能做些什么来解决这些错误。这只是一个基本的 Laravel/EBS/SQS 设置,队列唯一要做的就是处理通知。有时一次几十个。我正在运行 t2.micro ,并假设这足以发送几封电子邮件?我已将环境升级到 t2.large但无济于事。
我注意到消息最终在队列中,然后获得状态“正在传输的消息”,但随后在 Laravel 方面遇到了各种麻烦。但我没有得到任何有用的错误。
所有实现代码似乎都很好,因为前几个通知按预期发出,如果我根本不排队,所有通知都会立即发送。
排队的通知最终会生成两个不同的异常:MaxAttemptsExceededException和一个 Out of Memory FatalError ,但两者都没有引导我解决实际的潜在问题。
我在哪里可以进一步调试?

更新
请参阅我对问题和解决方案的回答。在工作人员尝试为仍必须创建的对象发送通知之前,数据库事务尚未完成。

最佳答案

当前分配给 PHP 的 memory_limit 是多少?您可以通过运行以下命令来确定这一点:

php -i | grep memory_limit
您可以通过运行以下内容来增加它:
sed -i -e 's/memory_limit = [current-limit]/memory_limit = [new-limit]/g' [full-path-to-php-ini]
只需更换 [限流] 使用第一个命令中显示的值,以及 [新限制] 具有新的合理值。这可能需要反复试验。替换 [php-ini 的完整路径] 带有失败进程使用的 php.ini 的完整路径。要找到它,请运行:
php -i | grep php.ini

关于php - 排队的 Laravel 通知卡在 AWS SQS 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64752187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com