Tomcat服务崩溃

我遇到了Tomcat服务崩溃的问题(停止响应请求),需要sigkill'd并每隔几天重新启动一次。 我的图表显示HEAP内存使用量在高峰时期达到3GB左右,这是问题最明显的症状。 从我读过的内容来看,为jvm添加Xmx最大内存限制是决定可以分配多lessHEAP的原因。 Xmx设置超过10GB。

我也玩弄了MaxPermSize这个说法,但没有成功。 我认为这个设置为一些应用程序的内存使用定义了内存分配,但是它与HEAP内存本身不同。

现在我想知道是否有一个替代设置,我可以通过定义/实际/ HEAP内存限制? 否则,调查问题的任何提示都是好的,因为我不能肯定地说是内存限制被打,错误日志没有显示太多。

我会首先build议你在Java和Tomcat上做一个速成课程。 我可以给你所有的提示,但最后你需要了解你在做什么来正确地pipe理服务器。

也就是说,你不能告诉JVM它可以使用比你的机器更多的内存。 如果你的Xmx已经高于10Gb,也许你可以增加它(如果你的服务器有更多的RAM可用)。 但有可能的是,这可能已经被设置在你面前的人最大的可能性。

至于发生了什么,你的日志会告诉你什么是内存不足 – HEAP或PermGen。 你需要了解这些是什么,你可以在这里阅读: Java HotSpot VM选项 。

但坦率地说,看起来应用程序中发生了内存泄漏 – 除非您使用的是默认的PermGen值,并且您正在使用PermGen,此时可能不是什么大问题,只是增加PermGen就可以了。

例如,PermGen是运行时生成的代码。 在今天的框架下,这是典型的(Hibernate,Spring,AOP等)。 所以一个典型的设置是512Mb或1Gb。 根据我的经验,根本不需要那么多,但可能会因应用程序而有所不同。