日志記錄出現(xiàn)錯誤,線程全部死掉,是什么原因?
2016-07-26 18:53:33 process_timeout:
#1 /data/wwwroot/default/TrafficServer/Workerman/Events/Select.php(229): pcntl_signal_dispatch()
#2 /data/wwwroot/default/TrafficServer/Workerman/Worker.php(1493): Workerman\Events\Select->loop()
#3 /data/wwwroot/default/TrafficServer/GatewayWorker/BusinessWorker.php(145): Workerman\Worker->run()
#4 /data/wwwroot/default/TrafficServer/Workerman/Worker.php(886): GatewayWorker\BusinessWorker->run()
#5 /data/wwwroot/default/TrafficServer/Workerman/Worker.php(848): Workerman\Worker::forkOneWorker(Object(GatewayWorker\BusinessWorker))
#6 /data/wwwroot/default/TrafficServer/Workerman/Worker.php(368): Workerman\Worker::forkWorkers()
#7 /data/wwwroot/default/TrafficServer/start.php(33): Workerman\Worker::runAll()
#8 {main}
異常是業(yè)務(wù)問題,看下workerman.log 是哪里的業(yè)務(wù)有異常,解決了就好了。
如果是超時問題導(dǎo)致的異常,并且你覺得你的業(yè)務(wù)執(zhí)行30秒以上沒問題,可以start_businessworker.php 加上類似的代碼 $business_worker->processTimeout=0;關(guān)閉這個超時檢測。
不過話說回來,如果每個請求都執(zhí)行超過30秒,如果瞬間有10000個請求發(fā)來,那么你的業(yè)務(wù)會運行好幾天才能把這些請求運行完畢,這幾天幾乎所有客戶端的訪問都無響應(yīng)。整個服務(wù)幾乎處于不可用狀態(tài)。所以不要逃避這個業(yè)務(wù)問題,業(yè)務(wù)上去解決才是最終解決方案。