我找到對(duì)應(yīng)的busy進(jìn)程,然后嘗試用kill -SIGALRM?16060 來看是否是系統(tǒng)調(diào)用阻塞導(dǎo)致的。而strace -ttp?16060 顯示了如下信息:04:15:04.140981 poll(, 1, 1000) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
04:15:04.147573 --- SIGALRM {si_signo=SIGALRM, si_code=SI_USER, si_pid=20549, si_uid=0} ---
這個(gè)信息代表著什么?老哥們求助
證明進(jìn)程一直在等待 fd=11的這資源返回?cái)?shù)據(jù),通過lsof 能看到這個(gè)資源到底是什么,有可能是http連接請(qǐng)求或者數(shù)據(jù)庫等等都有可能。
lsof參考文檔?http://doc.workerman.net/debug/busy-process.html
謝謝,問題找到了,lsof 看到有個(gè)tpc連接。最后發(fā)現(xiàn),代碼里面一個(gè)post的curl請(qǐng)求,而這個(gè)請(qǐng)求沒有給超時(shí)時(shí)間,而在workman下和普通php運(yùn)行模式,在這里是有區(qū)別的。普通模式下就會(huì)自動(dòng)超時(shí),而workman下就會(huì)一直等待curl結(jié)果?,F(xiàn)在加上了一個(gè)超時(shí)時(shí)間,目前沒有出現(xiàn)大量busy的情況了