如果,你有在使用【进程守护管理器】,记得在更新/重启,甚至卸载重新安装后,重启服务器。
事情的起因是,昨日服务器突然异常,网站无法正常访问,进入宝塔面板,发现 cpu和负载率均超过100%
我的项目是thinkphp6,用的think-queue
php7.4+rds+redis,数据库都是上云。
因为这个服务器是有运行一些队列,我把所有进程都关了,还是没有变化。
在搜索解决方法的过程中,宝塔论坛有人提到过,是某些监控插件引起的。
我就把旧版本的网站监控卸载了,把新版本的更新。不行,就把能更新的都更新了(包括【进程守护管理器】),能卸载的卸载了。
还没能解决。我用自带的【宝塔任务管理器】看进程列表。把进程数量php应用最高的结束掉。还是不行,重启php、宝塔面板,更新面板,清理磁盘空间。都不行。最后是结束掉Nginx,重新启动恢复。
这个服务器A,只是我其中一个,还有另外的服务器B处理相同名称和不同的名称的队列任务。
今天,2024年10月11日中午开始。
陆续有用户反馈,不同的涉及到队列的功能,部分任务没有执行到,无执行记录。
因为已经涉及到了核心功能影响到用户的正常使用了,只能放下其他工作,开始排查。
我生产了100个输出0~99的任务,用旧名称。执行完,无队列消费记录,无报错。
我生产了100个输出0~99的任务,用旧名称,延时10秒后执行。执行当时有100个定时任务,时间到后,无队列消费记录,无报错。
分别在重启队列、重启软件后再次尝试以上,无果,关闭进程。
我生产了100个输出0~99的任务,用一个新名称,使用ssh连接服务器,执行。100条记录跑完。
php think queue:work --queue test3 --tries 1
我以为是【进程守护管理器】软件的问题,在ssh上运行旧名称的队列命令。等了好一会都没有见消费任务进来。
在等待的过程中,我把【进程守护管理器】备份配置信息,直接给卸载掉,重新安装。
在我没有再往【进程守护管理器】添加进程的前提下,mysql一直在生成的任务列表。但是redis的定时任务还没到的时候,是有记录的,一到时间,就没有了。我的ssh面板上也没记录。我把ssh断开后,把【进程守护管理器】卸载掉,还是一样的情况。
是的!队列任务还是莫名其妙被消费掉。
已经有不同的用户反馈不同的问题了,还是比较核心的功能。
最后,无奈重启生产服务器,不等晚上了。
恢复正常 2024年10月11日 17点34分。