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那一轮也正常执行了。

你好,我是勤勤学长。

相关推荐
2601_965798471 小时前
How to Build a Custom Artisan Store on WordPress: Crafti Theme Review
linux·服务器·数据库
luyun0202021 小时前
论坛里的小工具,吾爱出品
运维·服务器·windows
江湖有缘1 小时前
Docker实战 | 使用Docker部署EasyNode服务器面板工具
服务器·docker·容器
你怎么知道我是队长2 小时前
计算机虚拟存储管理与页面置换算法详解
服务器·网络·算法
tjjingpan3 小时前
HCIP-Datacom Core Technology V1.0_20 IPv6概述
linux·服务器·网络
数聚天成DeepSData4 小时前
外贸海关进出口数据去哪免费下载?从统计到明细的查找指南
linux·服务器·开发语言·前端·网络·人工智能·自然语言处理
Huangjin007_4 小时前
【Linux 系统篇(十)】基础开发工具(五) —— 第一个系统程序 - 进度条
linux·运维·服务器
路由侠内网穿透.5 小时前
本地部署开源日志收集系统 Log Bull 并实现外部访问
运维·服务器·网络·数据库·开源
ZY小袁6 小时前
LVS知识点总结
linux·运维·服务器·经验分享·负载均衡·学习方法
未知违规用户6 小时前
大模型项目: 学习FastAPI 服务器开发
服务器·人工智能·python·学习·fastapi