和上一次发生的情况一样,见《详解Ecstore计划任务的代码逻辑》,这次计划任务又没有正确的执行完毕,这次说一下具体的表现。
1.后台系统,定时任务里有按时运行的计划任务记录,说明cron是起来了,并运行了。
2.后台队列里存在大量状态为-1的记录,说明运行队列任务时,异常抛出了,导致这些队列没有正常被清空。
这里补充一下,ecstore的计划任务通过linux的crond来执行,执行时先加入队列(插入到数据表中),初始化队列状态为-1,正常跑完队列后,状态会变成非-1状态,并且会从队列里删除(在数据表里删除该记录)
3.同时,系统有僵尸进程存在,分别对应一个php,一个shell的进程。和ecstore的计划任务正好对应上了。ps -ef | grep defunt | grep -v grep的结果。
4.解决办法同上一次,kill掉僵尸进程。
留了一个问题,到底是不是由于异常原因,产生了僵尸进程,然后导致ecstore正常的队列逻辑无法正常处理(跑之前会先确认有没有该进程,没有的话才执行队列)?
文章评分1次,平均分5.0:★★★★★
可以