Laravel Horizon-工作陷入困境



我们使用的是Laravel 8.x,我们刚刚将队列驱动程序从数据库切换到了redis/ohorizon。现在我们在一些工作中有一些奇怪的行为。

Job本身会在几分钟到90分钟之间的一段时间内转换内容。使用数据库驱动程序可以正确执行作业。在地平线上,作业执行了一段时间,然后似乎被卡住了。我们已经用相同的负载对该作业进行了多次测试,但它在不同的运行时被卡住,并在超时后被标记为失败(时间戳与开始时间相同(。

主管的日志文件包含以下内容:

[2022-01-07 18:08:33][b69e5cf9-4f88-4005-a5c4-4722e46fe7d0] Processing: AppJobsConvertJob
[2022-01-07 18:08:33][b69e5cf9-4f88-4005-a5c4-4722e46fe7d0] Failed:     AppJobsConvertJob

(其他(日志文件不包含任何(其他(错误:-/

我们对horizon的配置如下(只是相关部分(:

'memory_limit' => 64,
'defaults' => [
'converter' => [
'connection' => 'redis',
'queue' => ['convert'],
'balance' => 'auto',
'maxProcesses' => 1,
'memory' => 128,
'tries' => 1,
'nice' => 0,
],
'worker' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'auto',
'maxProcesses' => 1,
'memory' => 128,
'tries' => 1,
'nice' => 0,
],
],
'environments' => [
'local' => [
'converter' => [
'minProcesses' => 4,
'maxProcesses' => 9,
'balanceMaxShift' => 3,
'balanceCooldown' => 2,
],
'worker' => [
'maxProcesses' => 6,
'balanceMaxShift' => 2,
'balanceCooldown' => 3,
]
],
],

主管配置:

[program:horizon]
process_name=%(program_name)s
command=php /app/artisan horizon
autostart=true
autorestart=true
user=%(ENV_SUPERVISOR_USER)s
redirect_stderr=true
stdout_logfile=/app/logs/sv-horizon.log
stopwaitsecs=5400

队列配置:

'redis' => [
'driver' => 'redis',
'connection' => 'queue',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 5430,
'block_for' => null,
'after_commit' => false,
],

作业本身将trys设置为1,timeout设置为5400秒,failOnTimeout设置为true。

也许你们谁能给我一个提示?

我也遇到了同样的问题,当我增加memory_limit=500时,正如@patrik grinsvall所建议的,解决了问题

最新更新