You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境Supervisor管理的Laravel队列worker被SIGKILL终止如何排查?

排查方向

1. Supervisor配置项限制

首先检查对应worker的supervisor配置段:

  • 确认stopwaitsecs参数值,默认值仅为10秒,若任务执行时长超过该值,supervisor会先发送SIGTERM信号,超时后直接发送SIGKILL强制杀死进程,该值必须大于队列任务的最大执行时长(你配置的--max-time=3600对应stopwaitsecs至少要设为3660以上)
  • 检查是否配置了memory_limit参数,若单worker进程内存占用超过该阈值会被直接杀死
  • 确认autorestart参数配置是否符合预期,避免异常退出后未按预期重启

2. Laravel队列配置超时

  • 检查config/queue.php中对应队列驱动的retry_after参数,若该值小于任务实际执行时长,Laravel会判定任务执行失败,将其放回队列重试,同时原运行中的进程可能被强制回收
  • 检查初始化任务类是否单独设置了$timeout属性,若该值小于任务执行时长会触发worker主动退出
  • 若使用Horizon管理队列,需检查Horizon对应队列的超时配置,全局或队列级别的超时限制优先级高于worker启动参数

3. 系统层面进程限制

  • 执行dmesg | grep -E 'kill|oom'查看系统日志,确认是否为OOM Killer杀死进程:即使整机内存使用率低,部分VPS、容器环境会配置单进程内存阈值、cgroup内存限制,超出后会直接发送SIGKILL
  • 检查是否存在定时任务、安全防护软件(如fail2ban、主机安全Agent)的策略,是否会主动杀掉运行时长超过阈值的php-cli进程

4. 任务逻辑与运行时配置

  • 检查PHP CLI的错误日志、Laravel的storage/logs目录日志,确认进程被杀死前是否存在未捕获的Fatal Error、数据库断开连接、外部接口调用超时等异常
  • 优化任务幂等性:给初始化逻辑加前置判断,创建数据库前先校验是否已存在,避免重试时出现重复创建的报错;核心步骤包裹数据库事务,中途异常时自动回滚已执行的操作

内容的提问来源于stack exchange,提问作者Jerome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:06:05