用Timer做定時(shí)查詢數(shù)據(jù)庫后推送消息功能,但經(jīng)常出現(xiàn)運(yùn)行時(shí)間長了之后BusinessWorker進(jìn)程莫名其妙死掉,status查看只剩下Gateway進(jìn)程,請(qǐng)問這是什么原因?qū)е碌哪兀?/p>
status看不到BusinessWorker進(jìn)程不代表進(jìn)程BusinessWorker已經(jīng)死掉,這種情況是由于業(yè)務(wù)代碼有bug,導(dǎo)致進(jìn)程卡死,比如數(shù)據(jù)庫沒有設(shè)置超時(shí)時(shí)間一直阻塞等待數(shù)據(jù)返回,比如使用了sleep使進(jìn)程睡眠,比如代碼里面有死循環(huán)等情況。
這種情況請(qǐng)檢查業(yè)務(wù)代碼,并通過strace命令查看BusinessWorker進(jìn)程阻塞在哪個(gè)系統(tǒng)調(diào)用,這樣很容易查出來業(yè)務(wù)代碼哪里卡住了。
strace使用方法手冊(cè)中有
http://doc3.workerman.net/debug/strace.html