我的 JVM 有时(但并非总是)在启动时死亡,且任何应用程序或系统日志文件中都没有错误。
中没有任何内容/var/log/kern.log
,也没有任何相关内容dmesg
。
问题是,即使我使用-Xdebug -Xrunjdwp
该suspend=y
选项,在运行主方法之前暂停 JVM 等待调试器连接,问题仍然有时发生,所以我知道这不是我的 Java 代码中的错误。
我知道该应用程序持续运行了 5 秒多一点,因为我的 JVM 启动脚本会休眠 5 秒,然后检查 JVM 的 PID 是否仍然存在,结果确实如此。但是当我尝试 ssh 登录并检查该进程是否仍然存在时,它已经消失了。
该进程的工作目录(/home/blahblah)中没有日志文件或核心转储。
答案1
有一件事我在问题中没有提到,因为我认为它不相关,那就是我在本地机器上使用另一个通过 ssh 进入服务器的脚本运行应用程序的启动脚本。
-t
我最近在这个脚本中添加了ssh
其他目的(用于查看less
服务器上的日志文件)——这对于启动/停止脚本来说不是必需的。
在删除-t
启动/停止情况的此选项后,该问题不再发生。
我应该注意的一个线索是,应用程序在确切地5秒,也就是时间长度相同启动脚本正在休眠以检查应用程序启动后是否仍然存在。