作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在运行我的 webapp 一段时间后(时间根据流量在几小时和几天之间变化)Tomcat 似乎随机关闭了自己。在这种情况发生之前,日志中没有任何异常(没有异常(exception)),只是我的应用程序发出的正常 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-b06Tomcat 版本:6
最佳答案
我以前见过这种情况,日志有时可能很神秘。我确实注意到您在端口 80 上运行(这是另一个问题),这让我相信您修改了 server.xml。如果服务器上有多个 tomcat 实例,请确保它们都有唯一的关闭端口。标准端口是 8005,如果多个实例正在监听同一个端口,则可以将它们都关闭。
您的代码或利用的库中可能存在随机 System.exit(),或者您在代码中不正确地隐藏了真正的错误消息。我已经看到很多次人们在 Controller 中写这个作为错误处理的一种形式:
try {
// Do something
} catch(Exception e) {
// No rethrowing or logging, just suppressing
}
这可以防止真正的错误冒泡甚至正确记录。
我还看到 Tomcat 服务器在达到内存限制时停止运行。日志中的某处会出现堆空间错误,但由于某种原因,我发现它很容易被埋没,剩下的就是暂停消息。除了 catalina.out 之外,查看 localhost.log 可能是值得的。那里的垃圾通常比较少。
关于java - 轻度使用后,Tomcat 随机关闭并出现 AbstractProtocol 暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088193/
我是一名优秀的程序员,十分优秀!