我们使用的是Laravel 8.x,我们刚刚将队列驱动程序从数据库切换到redis/horizon。现在我们得到一些奇怪的行为与一些工作。
工作本身在几分钟到90分钟之间的一段时间内转换东西。使用数据库驱动程序,作业可以正常执行。有了地平线,工作执行了一段时间,然后似乎被卡住了。我们已经用相同的有效负载测试了这个作业很多次,它在不同的运行时被卡住,并在超时后被标记为失败(与start的时间戳相同)。
主管的日志文件包含以下内容:
[2022-01-07 18:08:33][b69e5cf9-4f88-4005-a5c4-4722e46fe7d0] Processing: App\Jobs\ConvertJob
[2022-01-07 18:08:33][b69e5cf9-4f88-4005-a5c4-4722e46fe7d0] Failed: App\Jobs\ConvertJob
(其他)日志文件不包含任何(其他)错误:-/
我们的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,
]
],
],
Supervisor配置:
[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,
],
作业本身将try设置为1,timeout设置为5400秒,failOnTimeout设置为true。
你们谁能给予我点提示?
1条答案
按热度按时间cwdobuhd1#
我遇到了同样的问题,当我按照@patrik-grinsvall的建议增加
memory_limit=500
时,问题就解决了。