用Timer做定时查询数据库后推送消息功能,但经常出现运行时间长了之后BusinessWorker进程莫名其妙死掉,status查看只剩下Gateway进程,请问这是什么原因导致的呢?
status看不到BusinessWorker进程不代表进程BusinessWorker已经死掉,这种情况是由于业务代码有bug,导致进程卡死,比如数据库没有设置超时时间一直阻塞等待数据返回,比如使用了sleep使进程睡眠,比如代码里面有死循环等情况。
这种情况请检查业务代码,并通过strace命令查看BusinessWorker进程阻塞在哪个系统调用,这样很容易查出来业务代码哪里卡住了。
strace使用方法手册中有 http://doc3.workerman.net/debug/strace.html
status看不到BusinessWorker进程不代表进程BusinessWorker已经死掉,这种情况是由于业务代码有bug,导致进程卡死,比如数据库没有设置超时时间一直阻塞等待数据返回,比如使用了sleep使进程睡眠,比如代码里面有死循环等情况。
这种情况请检查业务代码,并通过strace命令查看BusinessWorker进程阻塞在哪个系统调用,这样很容易查出来业务代码哪里卡住了。
strace使用方法手册中有
http://doc3.workerman.net/debug/strace.html