【发布时间】:2020-06-30 21:08:11
【问题描述】:
我有一个在 RHEL 6.10 上运行的 Java8 应用程序。这个应用程序通过通常的方法注册了一个关闭处理程序:
Thread shutdownThread = new Thread(()=>{
Logger.info("Got shutdown signal");
// Do cleanup
});
Runtime.getRuntime().addShutdownHook(shutdownThread);
此应用程序由 Jenkins 构建启动(BUILD_ID env var 设置为 dontkillme)。应用程序初始化成功,但在约 30 秒后调用关闭挂钩并终止应用程序。我试图弄清楚是谁在关闭我以及为什么。我已经监视了top,它运行时似乎内存不是问题,所以我不认为OOM 杀手是罪魁祸首。我还查看了/var/log/dmesg 和/var/log/messages,也没有看到任何相关的内容。我不认为 Jenkins 会杀了我,因为我设置了BUILD_ID,也因为应用程序在“父”Jenkins 作业仍在运行时死亡。
我可以使用哪些其他方法/工具来查看正在发生的事情?请注意,我的环境非常封闭,因此很难从 Internet 下载和运行某些东西,希望我可以使用标准 RHEL6 安装中的某些东西。
【问题讨论】:
-
OOM 杀手也不会调用关闭挂钩。有些东西正在发送信号。
-
是的,想通了。只是想我会添加它
-
我不认为 Jenkins 会害死我 通过单独运行您的应用程序来消除 Jenkins 似乎相当容易,即从命令行启动并查看它是否仍然存在关闭。
-
独立运行成功。但我认为我正在配置一些东西,这样 Jenkins 就不会杀了我(例如,还有其他应用程序启动了该作业,并且它们的寿命超过了父作业)。除非有人知道其他方法来确认詹金斯不是坏人
标签: java jenkins java-8 rhel rhel6