首先,先找出那个假死的进程然后查看状态,用ps命令
ps aux|head -n 1;ps aux|grep process_niubi_hh.php
这里说个小技巧,就是如何展示ps的表头,可以看出我的命令里其实是两条命令组成,第一条是获取头一条,然后加个分号,最后再把需要获取内容的命令拼上去,也就是说一个分号,就能将两条命令的内容拼在一起了
第二,查看这个进程的打开了哪些连接
ll /proc/7861/fd
从上图可以看出,这个进程请求到了最后一步就停了,说明这个socket请求有问题,接下来开始排查这个socket
第三,排查这个socket连接了什么
head
-n 1
/proc/net/tcp
;
grep
7238424
/proc/net/tcp
上图中有两个值需要关注,一个是loca_address 本地地址,一个是rem_address 远端地址,相当于本地主机请求了远端一个地址的记录,现在需要对远端地址进行16进制转10进制,因为ip是每一段都是8位,这里是16进制,也就是要两个两个拿出来
比如17140A0A:14D3 这个要先切成 17 14 0A 0A :14D3(端口就直接4位数丢进去转)
然后每一段单独转成10进制
就变成 23 20 10 10 : 5331,最后再反转 10 10 20 23:5331=>10.10.20.23:5331
然后再去这台机器上看这个端口通不通,去看了下果然不通,就是因为这个问题导致进程卡住假死,就可以去运维的锅了