process_timeout

bysx111

日志记录出现错误,线程全部死掉,是什么原因?

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}
5416 5 0
5个回答

walkor

应该是业务卡住了,比如读数据库长时间不返回等。

你可以通过strace定位下有问题时进程卡在哪里

  • bysx111 2016-07-28

    按理论来说,线程卡住后不会重启线程么?这个线程卡住后程序就直接全线崩溃。。。

  • walkor 2016-07-28

    线程卡住后不会重启线程?没有这个理论。workerman里面没有多线程,workerma是多进程的。因为你你的进程卡住了,所以会影响后续请求的处理。但是这个不一定是你说的全线崩溃的原因。具体原因还得自己从业务上查

  • hyxj1220 2019-07-13

    我也遇到这个情况 使用的是mycat中间件,卡在了读取数据,但中间件长时间不返回然后一直卡着,sql是很简单的根据主键查询一条数据,问下walkor 可知道是中间件哪里的问题

lu4588198

也遇到这种情况了。。你们知道啥原因了么

  • 暂无评论
walkor

Events::onMessage 里面的业务代码执行太慢了,超过了30秒

  • lu4588198 2018-05-11

    与没有使用event有关系吗?strace 发现select比较耗时

  • walkor 2018-05-11

    业务问题,和其它没关系

  • lu4588198 2018-05-11

    嗯 好的 我查查吧 谢谢

lu4588198

[attach]1029[/attach]
,这个异常频率太高了。总是异常重启

  • 暂无评论
walkor

异常是业务问题,看下workerman.log 是哪里的业务有异常,解决了就好了。

如果是超时问题导致的异常,并且你觉得你的业务执行30秒以上没问题,可以start_businessworker.php 加上类似的代码 $business_worker->processTimeout=0;关闭这个超时检测。

不过话说回来,如果每个请求都执行超过30秒,如果瞬间有10000个请求发来,那么你的业务会运行好几天才能把这些请求运行完毕,这几天几乎所有客户端的访问都无响应。整个服务几乎处于不可用状态。所以不要逃避这个业务问题,业务上去解决才是最终解决方案。

  • lu4588198 2018-05-11

    谢谢,找到原因了。monogdb插入数据太慢了 40多s

年代过于久远,无法发表回答
🔝