如何排查进程假死

首先,先找出那个假死的进程然后查看状态,用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

然后再去这台机器上看这个端口通不通,去看了下果然不通,就是因为这个问题导致进程卡住假死,就可以去运维的锅了

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页