ThinkPHP + Supervisor 队列任务丢失:僵尸 Worker 排查全记录

僵尸进程

程序:thinkphp6+think-queue

环境:宝塔linux+Supervisor

问题现象:

我有一个脚本,每半个小时查询需要执行的任务,再通过消费队列的方式,投递执行。

已知,当前半个小时执行数量20,从11:30到14:00,理论上在日志中,至少有120条记录,日志只有不到10条,而且消费的任务名称不一致(我在日志中会输出当前执行的是什么任务),无规律,

也就是出现任务丢失。

查看thinkphp的log,无异常。查看队列的异常log,也无异常。

排查发现,其他队列正常。只有cron这个处理定时任务的队列异常。

在Supervisor重启cron后,14:00那一轮也只有2条。

排查发现

bash 复制代码
[root@iZ8vbhyenz6cZ public]# ps aux | grep -E "queue:work.*cron"
root      197330  0.0  0.5 223276 45300 ?        S    14:13   0:00 php think queue:work --queue cron --tries 1 --timeout 300
root      198191  0.0  0.0   5756   940 pts/1    S+   14:17   0:00 grep --color=auto -E queue:work.*cron
root     1278768  0.0  1.3 321236 104348 ?       S    May25   5:26 php think queue:work --queue cron --tries 1 --timeout 300
root     3919432  0.0  0.4 227376 32128 ?        S    11:24   0:02 php think queue:work --queue cron --tries 1 --timeout 300
[root@iZ8vbhyenz6cZ public]# /www/server/panel/pyenv/bin/supervisorctl status | grep -i cron
cron:cron_00                                                 RUNNING   pid 197330, uptime 0:04:15
[root@iZ8vbhyenz6cZ public]#

发现了,3个进程同时在消费同一个 cron 队列。

Supervisor用的是197330,而我设置的进程数量只有1,理论上就应该只有1个进程。

那就意味着,冒出来的1278768 、3919432是异常的,大概率分发到他们了,进程在但实际未工作。

bash 复制代码
# 杀掉两个僵尸 Worker(1278768 和 3919432)
kill -9 1278768 3919432

# 确认杀干净了
ps aux | grep -E "queue:work.*cron"

重新投递未执行成功的任务。正常。

14:30那一轮也正常执行了。

你好,我是勤勤学长。

相关推荐
雪碧聊技术1 小时前
使用Docker,将fastApi项目部署到linux服务器
服务器·docker·fastapi·docker部署fastapi
故乡dee云2 小时前
华为云国际服务器连不上怎么办?安全组、端口、IP 和网络排查方法
服务器·网络·华为云
佳児素花痴╮2 小时前
服务器模型、网络调试工具、网络协议头分析
服务器·网络·网络协议
明志数科4 小时前
宇树科技IPO背后的产业逻辑:人形机器人从“讲故事“到“交数据“
运维·服务器·数据库
Data_Journal5 小时前
什么是 CAPTCHA,它是如何工作的?
java·大数据·服务器·前端·数据库
AC赳赳老秦5 小时前
语义采集进阶实战:利用 OpenClaw AI 语义识别自动提取网页核心信息,无需手动编写选择器
java·运维·服务器·python·信息可视化·deepseek·openclaw
我星期八休息5 小时前
扩展—DNS与ICMP
linux·服务器·网络
筝筝ba6 小时前
linux 查询当前登录的用户数量
linux·服务器·网络
woniu_buhui_fei6 小时前
日常工作常用的命令(Linux+JDK)
linux·运维·服务器
OnlineProxy7 小时前
如何在无需手机号的情况下创建 Google 账号:高信任度代理(High Trust Score Proxy)如何取代短信验证
运维·服务器·facebook