Catalina Tomcat 9 卡在“正在停止”

问题描述 投票:0回答:1

我目前在 Fedora 39 上使用 Eclipse 和 tomcat 9.0.55,几天来一直面临这个问题,当我尝试停止服务器时,它总是卡在“正在停止”。

enter image description here

并且永远处于不确定状态,或者直到我用以下方法杀死它:

pkill -f catalina
,或
killall java
作为最后的手段。

即使日志显示作业调度程序已停止,也无法从上下文菜单重新启动或停止。

偶尔会产生错误:

enter image description here

单击“确定”会立即终止服务器。控制台或其他地方没有生成任何日志或跟踪。

我对服务器所做的唯一更改是将启动时间设置为 84600 秒,停止时间设置为 15 秒,关闭模块的自动重新加载(我认为这没有任何原因)。

enter image description here

我根本不知道可能是什么原因造成的,并且没有我知道的日志或跟踪信息。

请注意,这是我的工作笔记本电脑,禁用了包管理器,我不应该绕过或规避它来遵守该策略,因此如果解决方案需要任何额外的包或实用程序,我真的无能为力。

我在这里解决的问题是如何解决这个问题,而不是如何杀死它,我仍然能够杀死它,但这不是非常优雅和/或指定的方式。

tomcat server tomcat9 catalina
1个回答
0
投票

增加关机超时时间

Tomcat 的默认关闭超时时间为 3 秒。如果您的应用程序需要更长的时间才能关闭,Tomcat 可能会卡住。您可以尝试通过修改 Tomcat 安装目录中的

server.xml
文件来增加关闭超时时间。

找到

<Server>
元素并添加以下属性:

<Server ... stopTimeout="60">

这会将关闭超时时间增加到 60 秒。您可以根据需要调整该值。

检查是否有卡住的螺纹

有时,卡住的线程可能会导致 Tomcat 无法正常关闭。您可以尝试启用 Java VisualVM 来捕获和分析线程转储。这可能有助于确定问题的根本原因。

重现问题并关闭 Tomcat 后,您可以分析 VisualVM 记录以识别任何卡住的线程或其他潜在问题。

检查资源泄漏

资源泄漏,例如未关闭的连接或文件句柄,也可能导致 Tomcat 无法正常关闭。您可以尝试通过修改

server.xml
文件来启用 Tomcat 中的泄漏检测和预防功能。

找到

<Server>
元素并添加以下属性:

<Server ... stopAwait="10" stopAttempts="3">

这将指示 Tomcat 在两次关闭尝试之间等待 10 秒,并在放弃之前最多尝试 3 次。

此外,您可以通过在

<Server>
元素内添加以下行来启用泄漏检测和预防功能:

<Server ...>
    ...
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    ...
</Server>

这些侦听器可以帮助识别和防止可能导致关闭问题的资源泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.