Jenkins 尝试运行某项作业后停止响应

Jenkins 尝试运行某项作业后停止响应

我目前正在尝试修复 Jenkins 安装,这是我以前从未做过的事情,但遇到了麻烦。我已经可以查看所有作业并运行构建。但是,大多数时候,当我启动一个作业时,Jenkins UI 会立即停止响应任何 http 请求,包括构建请求。浏览器只是无限期地旋转。解决此问题的唯一方法是在 jenkins 上执行 systemctl restart。请注意,构建 ID 已递增,但实际上从未发生过。有几次构建实际上已经发生,并且构建 ID 已根据我让 UI 挂起并需要重新启动它的次数而增加。

这是在 RHEL 7.9 上。Jenkins 版本是 2.49。发生这种情况时,我检查了 jenkins.log,但没有任何有用的信息。请注意,在发生故障后,jenkins 进程仍在运行;只是 Web 应用程序似乎停止执行任何操作,只接受(而不是回答)请求。

我对此很陌生,所以请告诉我我可以提供哪些我可能错过的有用信息。

答案1

在得到了 rogerdpack 关于 jstack 的出色提示之后,我能够为挂起的进程运行 jstack -F,并立即看到在监视对象上存在死锁,该对象与执行我想要启动的作业和用于日志记录的控制台处理程序相关联。

查看阻塞线程列表后,很明显这是由于日志记录造成的;当 Jenkins Java 命令发生故障时,我们为其添加了自定义日志记录(因为我们无法访问 UI 来查看日志)。在修复了足够多的问题以使 UI 能够加载后,我仍然保留了该日志记录。多个线程在日志记录类上被阻塞。在我删除自定义日志记录并重新启动 Jenkins 后,一切似乎都运行顺利。

再次感谢 rogerdpack 提供的信息!

相关内容