Tomcat访问日志 - 是否包含失败的请求?

时间:2013-06-26 10:40:32

标签: java tomcat ubuntu amazon-ec2

我们有一个RESTful Web服务(Java,托管在Tomcat中)。它不时失败(不是每周)。当它失败时,Java CPU消耗将达到100%并占用所有可用内存。它本身并没有完成。我必须重新启动服务器。

Tomcat访问日志中没有任何可疑之处。我猜我们的一个用户可能会提交一个非常“重”的请求,这会导致服务器关闭。这个请求是否可能不在Tomcat日志中,因为它从未完成?

非常感谢

马克西姆

1 个答案:

答案 0 :(得分:0)

你的Tomcat进程更有可能在没有更多可用内存之前泄漏内存。尝试使用每个请求记录堆大小,然后注意它是否继续增长。

tomcat类加载器可能会泄漏内存,尤其是在使用“自动部署”功能时。

long freeMem=Runtime.getRuntime().freeMemory();
long maxMem=Runtime.getRuntime().maxMemory();
long totalMem=Runtime.getRuntime().totalMemory();

然后记录freeMem / MaxMem和totalMem。如果max持续增长你就会泄漏。

编辑:并回答你的问题。这取决于tomcat如何失败,以及如何设置日志记录。但是使用我们的系统(相当默认的apache mod_proxy => tomcat,有一些致命的tomcat错误,只记录在catalina.out