我找到对应的busy进程,然后尝试用kill -SIGALRM 16060 来看是否是系统调用阻塞导致的。而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} ---
这个信息代表着什么?老哥们求助
证明进程一直在等待 fd=11的这资源返回数据,通过lsof 能看到这个资源到底是什么,有可能是http连接请求或者数据库等等都有可能。
lsof参考文档 http://doc.workerman.net/debug/busy-process.html
谢谢,问题找到了,lsof 看到有个tpc连接。最后发现,代码里面一个post的curl请求,而这个请求没有给超时时间,而在workman下和普通php运行模式,在这里是有区别的。普通模式下就会自动超时,而workman下就会一直等待curl结果。现在加上了一个超时时间,目前没有出现大量busy的情况了