Post

记录一次kill9也杀不死的进程

今天同事使用jmeter压测订单模块,一会儿发现数据库访问不了,登录服务器上看到数据库服务器负载150, 我擦。

然后一看进程,有很多jmeter的进程,明显不正常,随便拿一个使用kill -9也杀不死

最后网上搜索一圈,得知此进程已经变为僵尸进程。只能杀其父进程。

首先使用 ps aux | grep pid 查看结果:

1
2
3
4
[rsrlogin@xuid17 ~]$ ps aux | grep 'Z'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
rsrlogin  2761  1.6  0.0      0     0 pts/1    Z    14:22   0:09 [java] <defunct>
rsrlogin  4797  0.0  0.0 112812   960 pts/2    S+   14:31   0:00 grep --color=auto Z

如果state 为 ‘Z’ 就代表为僵尸进程;

接下来使用ps -ef | grep pid 查看结果:

1
2
3
4
[rsrlogin@xuid17 ~]$ ps -ef | grep 4358
rsrlogin  4358  4334  4 14:29 pts/1    00:00:09 /usr/local/jdk1.8.0_171/bin/java -server -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx256m -XX:MaxMetaspaceSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -Duser.language=en -Duser.region=EN -jar ./ApacheJMeter.jar -n -t 订单自动化.jmx
rsrlogin  5008  2490  0 14:32 pts/2    00:00:00 grep --color=auto 4358
root     24358     2  0 13:13 ?        00:00:00 [kworker/1:2]

这里返回的第一列(4358)是pid列,第二列(4334)是ppid列。

然后使用kill -9 4334 即可正常结束进程。

This post is licensed under CC BY 4.0 by the author.