java 杀死僵死的线程_神奇的Java僵尸(defunct)进程问题排查过程

点击上方"IT牧场",选择"设为星标"技术干货每日送达!

556af2d833dd5150e24387744c66c1ac.png

原文链接:https://www.jianshu.com/u/21add3dce532

现象描述

大概1个月多以前 在启动脚本中增加了tail -f

用来启动后追踪日志判断是否启动成功

后发现无法执行shutdown.sh(卡住 利用curl) 然后无奈使用kill -9

但通过ps -el 发现此时进程变为defunct 即僵尸进程

当时的解决办法无奈 只能找到僵尸进程的父进程kill

当时认为可能是tail的问题 后来启动脚本中去掉tail 发现问题解决

But

当时一直没有来得及排查是如何引起僵尸进程的问题

这两天抽时间排查了一下 发现和tail没有一毛钱关系

艰难的排查过程1-尝试复现

测试代码Defunct.java

import java.util.concurrent.TimeUnit;public class Defunct { public static void main(String[] args) { while (true) { System.out.println("test defunct"); try { TimeUnit.SECONDS.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } } }}

启动脚本start.sh

#!/bin/ba

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值