这两天总是会出现fcgi程序挂住,不能继续处理的问题,通过日志发现是在mysql的execute接口出问题,strace进程看到
strace -p 3497
Process 3497 attached - interrupt to quit
read(5,
Process 3497 attached - interrupt to quit
read(5,
而又通过lsof -p pid
xxx 6155 xxx 5u IPv4 1631647335 TCP x.x.x.x:52547->x.x.x.x:mysql (ESTABLISHED)
xxx 6155 xxx 6u IPv4 1631647336 TCP x.x.x.x:52548->x.x.x.x:mysql (ESTABLISHED)
xxx 6155 xxx 7u IPv4 1631647337 TCP x.x.x.x:52549->x.x.x.x:mysql (ESTABLISHED)
xxx 6155 xxx 6u IPv4 1631647336 TCP x.x.x.x:52548->x.x.x.x:mysql (ESTABLISHED)
xxx 6155 xxx 7u IPv4 1631647337 TCP x.x.x.x:52549->x.x.x.x:mysql (ESTABLISHED)
命令可以看到,
这个fd=5的句柄实际是以某一个mysql的连接,这样就确定所有的进程都堵死在这个连接上,一直等待回包,因而确定为网络原因。或者是mysql产生死锁
接下来就是查看mysql的状态了