linux java defunct

还原现场

现象:

  • sonar关闭后重启失败
  • 尝试重新启动,依旧失败;
  • es报错,对某个目录lock拿不到
  • 怀疑进程未关闭;但是sonar/es相关进程均无
  • 开始查java进程,如下
1
ps -ef | grep defunct
1
2
3
UID          PID     PPID       C    STIME      TTY          TIME              CMD
1000 637 27872 0 Oct12 ? 00:00:04 [chrome] <defunct>
1000 1808 1 0 Oct04 ? 00:00:00 [java] <defunct>

顾名思义,这是一个弃用的进程。

既然存在进程,那么很可能占用了某些资源。

继续排查:

  • 机器上无其他服务
  • 查资料 - defunct

一般产生原因:

使用jdk是预编译,与本地环境不兼容。例如,某个.so动态链接库文件不一致等等。

解决方式:

下载jdk src源码,本地编译

处理方式:

  • 尝试kill -9 pid
  • 重启(必杀)