一尘不染

轻度使用后,Tomcat随机以AbstractProtocol暂停关闭

tomcat

在运行我的Web应用程序一段时间后(时间根据流量的不同,时间在几天和几天之间会有所不同),Tomcat似乎会随机关闭自己。在发生这种情况之前,日志中没有任何异常(无例外),只是我的应用程序发出的普通INFO信息。

谁能帮忙以最好的方式调试它?Tomcat中是否有任何东西会触发AbstractProtocol pause信号?

日志:

09-Nov-2011 21:40:19 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-80"]
09-Nov-2011 21:40:20 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
09-Nov-2011 21:40:21 org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina

Java版本:1.6.0_25-b06 Tomcat版本:6


阅读 654

收藏
2020-06-16

共1个答案

一尘不染

我以前见过这种情况,有时日志可能是晦涩的。我确实注意到,虽然您正在端口80上运行(这是另一个问题),但我仍然相信您已修改了server.xml。如果服务器上有多个tomcat实例,请确保它们都具有唯一的关闭端口。标准端口为8005,如果多个实例在同一端口上侦听,则可以将它们都关闭。

您的代码或杠杆库中可能存在随机的System.exit(),或者您不当地禁止了代码中的真实错误消息。我已经看到很多次人们以错误处理的形式在控制器中编写代码:

try {
  // Do something
} catch(Exception e) {
  // No rethrowing or logging, just suppressing
}

这样可以防止真正的错误冒出来,甚至无法正确记录日志。

我也看到过,tomcat服务器在达到内存限制时才停止运行。日志中某处会出现堆空间错误,但是由于某种原因,我发现它很容易被掩埋,剩下的就是暂停消息。除了从catalina.out中查找localhost.log外,可能还值得。通常那里的垃圾较少。

2020-06-16