我開了 5 個(gè) procress , 可是有時(shí) run 了一些時(shí)間後 , status 只看得到 4 個(gè) procress (如下所示)
而我去作業(yè)系統(tǒng)看 , 5 個(gè) procress 是都存在的 ,
請(qǐng)問一下 , status 看不到的那一個(gè) procress 是不是死掉了, 還是它還是正常在執(zhí)行 ,
不知是我哪邊沒寫好 , 還是 status 沒列出的那個(gè) process 不影響功能正常執(zhí)行 ,
我是怕如果 run 久一點(diǎn) , process status 列出的數(shù)量是 0 了 , 是不是我就要 workermand restart 了
謝謝回覆啦 ~~~
WorkerMan version:2.0.1
start time:2014-11-09 11:14:34 run 0 days 0 hours
load average: 0.03, 0.06, 0.05
1 users 3 workers 7 processes
worker_name exit_status exit_count
FileMonitor 0 0
Monitor 0 0
main 0 0
---------------------------------------PROCESS STATUS-------------------------------------------
pid memory listening timestamp worker_name total_request packet_err thunder_herd client_close send_fail throw_exception suc/total
17487 1.25M udp://192.168.3.98:9912 1415502874 main 175 0 6 0 0 0 100%
17488 1.25M udp://192.168.3.98:9912 1415502874 main 239 0 5 0 0 0 100%
17489 1.25M udp://192.168.3.98:9912 1415502874 main 190 0 7 0 0 0 100%
17490 1.25M udp://192.168.3.98:9912 1415502874 main 447 0 19 0 0 0 100%
workermand status
原理是Monitor進(jìn)程向所有子進(jìn)程發(fā)送一個(gè)SIGUSR1信號(hào),子進(jìn)程如果空閑(處于idle狀態(tài))就報(bào)告自己的運(yùn)行狀態(tài)(其實(shí)是將自己的狀態(tài)寫入消息隊(duì)列,Monitor去讀取然后展示)。
當(dāng)子進(jìn)程收到SIGUSR1信號(hào)的時(shí)刻,如果子進(jìn)程正在忙于處理用戶請(qǐng)求,則不會(huì)立刻報(bào)告狀態(tài),而是等到當(dāng)前請(qǐng)求處理完畢再報(bào)告。運(yùn)行 status命令等待子進(jìn)程報(bào)告的超時(shí)時(shí)間為1秒,也就是如果有子進(jìn)程超過1秒沒上報(bào),就不再等待。所以會(huì)看到有些進(jìn)程沒有在status展示。
所以總的來說,如果status少了幾個(gè)進(jìn)程,一般沒太大關(guān)系。如果少了很多,說明workerman比較繁忙,或者進(jìn)程被某種耗時(shí)的操作(如讀取mysql等)卡住了。如果是被耗時(shí)的操作卡住(通常是阻塞在網(wǎng)絡(luò)IO上,現(xiàn)象是系統(tǒng)負(fù)載很低),需要查明耗時(shí)原因,避免所有進(jìn)程被卡住導(dǎo)致無法服務(wù)。如果workerman比較繁忙,看下系統(tǒng)資源(主要是cpu資源)是否還有剩余很多,如果資源還有很多,可以考慮加大進(jìn)程數(shù)緩解壓力。如果資源不夠了服務(wù)器硬件已經(jīng)到達(dá)瓶頸,則可以考慮擴(kuò)容(增加機(jī)器)。
總結(jié):
可以利用workermand status 能看到自己服務(wù)的運(yùn)行健康狀況,比如有多少進(jìn)程在干活,有多少進(jìn)程空閑,是否有進(jìn)程長時(shí)間被IO阻塞等。
另外個(gè)人感覺msig開的進(jìn)程數(shù)有點(diǎn)少,如果業(yè)務(wù)有操作數(shù)據(jù)庫等網(wǎng)絡(luò)資源,可以將進(jìn)程數(shù)調(diào)整到cpu核數(shù)的5倍左右。另外最好也查下為什么有進(jìn)程在1秒內(nèi)都沒有返回status結(jié)果,可能是數(shù)據(jù)庫很慢導(dǎo)致進(jìn)程卡著
ok , 了解了 , 感謝回覆 ~~~
我實(shí)際是開 40 個(gè)進(jìn)程數(shù)啦 , 只是為了舉例方便 , show 成 開 5 個(gè) ~~~