jstack报错:Unable to open socket file: target process not responding or HotSpot VM not loaded

1、jstack 或者其他联系JVM的 HotSpot Dynamic Attach mechanism 操作,会在 /tmp 目录下生成一个 .java_pid 文件,这个文件的生成目录不可修改,而且文件一旦生成,不可以删除再尝试重新生成

2、impala 进程启动后,即刻会生成出 /tmp/.java_pid 文件,后续被 systemd-tmpfiles --clean过期删除(默认10天),删除后就会报 Unable to open socket file。

针对impala 的问题,可以在impalad 所在主机 /usr/lib/tmpfiles.d/tmp.conf中添加 x /tmp/.java*,排除对java socket的删除,保证后续遇到问题需要排查时,可以执行jstack

现有已经丢失的情况,必须重启对应进程才能生成出 /tmp/.java_pid 文件

3、其他jvm 进程,比如 az exec,是先有第一次jstack,生成出 /tmp/.java_pid,然后不重启的情况下,10天后被删除,再 jstack 就会一样的问题,场景较少,确实需要时再参考 2修改