我们的 Laravel 项目遇到以下错误:
Fatal Error: Allowed Memory Size of 124213718 Bytes Exhausted.
此外,我们的队列工作人员正在
failed_jobs
表中记录错误,具体来说:
Illuminate\Queue\MaxAttemptsExceededException.
我的问题是:这两个错误是否相关?内存耗尽是否是导致
MaxAttemptsExceededException
的一个因素?
在服务器上,我们的
/etc/php.ini
文件当前有 memory_limit = 512M
。我们有足够的资源将其增加到2G
。提高内存限制是否可以解决或缓解这些问题?
提供一些背景信息。 我们的 cron 作业正在处理超过 4000 个 RDS 实例。 其中一个实例导致此错误出现在
failed_jobs
表中。
尝试过的可能解决方案之一:在
superivsor.d
文件中的 queueworker.ini
目录中 - 我已将超时增加到 300,因为我看到这是一个常见的解决方案,但它仍然不起作用。
预先感谢您的任何建议!
queueworker.ini
文件
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/my-app/artisan queue:work --sleep=3 --tries=3 --timeout=300
autostart=true
autorestart=true
user=admin
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/my-app/storage/logs/worker.log
startsecs=0
如果无法访问您的日志,就无法确定这一点。
检查你的 Laravel 日志并搜索 MaxAttemptsExceededException,这将向你准确显示失败的原因(以及原因)。
此外,您的内存不足错误显示您允许的内存为 128MB(已耗尽 124213718 字节)而不是 512MB,您应该仔细检查该限制是否同时应用于作业、Web 请求和 CLI。