[英]Sudden Java Heap Space errors on Tomcat 5.5
我们在生产环境中有一个Spring 2.0.8应用程序,它在Tomcat 5.5.x和JRE 1.5.x上运行(是的,我知道,我们应该升级,现在不重要了),并选择Oracle 11g作为数据库。
我们已经在几个月前(我说是七月)升级了该应用程序,并且在过去一个月左右的时间里已从Oracle 10g切换到Oracle 11g(还更改了Oracle JDBC驱动程序以匹配数据库版本)。
我们在生产中遇到了严重而出乎意料的问题。 截至一天前,堆空间OutOfMemory错误相隔数小时。 反过来,这可能会使响应时间降低大约100倍,或者用户无法连接。
我们的设置是:
既然注意到了这个错误,这就是我们尝试的方法:
我正在寻找其他方法的想法。 我们总共有5种不同产品的相同设置,而有问题的是用户和数据最少。
现在您已经弄清楚了,我建议您将以下内容添加到要做REAL SOON的事情列表中:
将JVM升级到Java7。Java5已“报废”,这意味着您将不再获得任何安全补丁……除非您与Oracle Java支持合同签订。
如果您不能升级到Java 7 ...或Java 6,则至少要升级到可以掌握的Java 5最新补丁程序版本。
升级到Tomcat 6或7,或者至少升级到最新的Tomcat 5.5。
要避免OutOfMemoryError
导致严重减速的问题,请确保在JVM命令行上具有-XX:+UseGCOverheadLimit
选项。
而且,如果您打算在该系统上进行任何重要的开发工作,请考虑将其升级到Spring3.x。
好的,我们知道了这一点。 事实证明,这是一个很少使用的,写得不好的SQL查询。 分析堆转储有助于找到占用大量内存的对象,我们从那里开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.