Java进程僵尸进程问题定位

在Linux服务器上,使用top命令查看CPU使用情况,发现大量僵尸进程。

解决办法:

1. 通过 ps aux | grep Z 定位到僵尸进程。最后有defunct的标记,就表明是僵尸进程。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2518  0.0  0.0      0     0 ?        Z    Jan23   0:00 [docker] <defunct>
root      2521  0.0  0.0      0     0 ?        Z    Jan23   0:00 [docker] <defunct>
root      2533  0.0  0.0      0     0 ?        Z    00:19   0:00 [docker] <defunct>
root      2535  0.0  0.0      0     0 ?        Z    00:19   0:00 [docker] <defunct>

2. 通过 pstree -apscl <pid> 找到是哪个Java进程创建的。

3. 清理僵尸线程

正常情况下我们可以用 SIGKILL
信号来杀死进程,但是僵尸进程已经死了, 你不能杀死已经死掉的东西。 因此你需要输入的命令应该是
kill -s SIGCHLD pid
将这里的 pid 替换成父进程的进程 id
清理僵尸线程:把父进程杀掉,父进程死后,僵尸进程称为“孤儿进程”,过继给1号进程init,init始终负责清理僵尸进程,它产生的所有僵尸进程跟着消失

程序中处理僵尸进程参考这条

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值