我已经基于 java:7-jdk
docker 镜像对 tomcat 7.0.73 进行了 docker 化。
我有一项工作,每 5 分钟使用命令 jstack 1
进行线程转储。它正常工作大约两周,然后崩溃并显示消息:
无法打开套接字文件:目标进程未响应或 HotSpot VM 未加载。当目标进程没有响应时可以使用-F选项
退出代码为 1。
造成这种行为的原因是什么?
JVM 保持正常工作。空间看起来也正确。
java -版本
java版本“1.7.0_111”
OpenJDK 运行时环境 (IcedTea 2.6.7) (7u111-2.6.7-2~deb8u1)
OpenJDK 64 位服务器虚拟机(内部版本 24.111-b01,混合模式)
已使用的文件系统大小可用使用%安装于
/dev/mapper/docker-202:1-xxx 10G 1013M 9.1G 10%/
tmpfs 3.9G 0 3.9G 0%/dev
tmpfs 3.9G 0 3.9G 0%/sys/fs/cgroup
/dev/xvda1 99G 68G 31G 69%/tmp
shm 64M 0 64M 0%/dev/shm
最佳答案
我怀疑某个进程可能正在清除 /tmp
中的旧文件,并且它正在使用相关的 /tmp/.java_pid
套接字文件(这是必需的)通过 jstack 等实用程序。)下次发生这种情况时,请查看相关文件是否仍然存在 - 如果不存在,那么这就是您的问题。
关于java - jstack正常工作两周后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47270135/