Java堆空间错误,我们在生产中春2.0.8应用,在Tomcat的5.5.x和JRE 1.5.x的运行(是的,我知道,我们应该升级,这不是现在的问题),使用Oracle 11g作为我们的DB选择。突然在Tomcat 5.5
我们已经在几个月前升级应用程序(我说7月)和在过去一个月已经从Oracle 10g中切换到Oracle 11g左右(也改变了Oracle JDBC驱动程序相匹配的数据库版本)。
我们一直有在生产造成了严重和意想不到的问题。截至前一天,相隔数小时的时间内出现了堆空间OutOfMemory错误。这反过来会使响应时间减慢大约100倍,或者用户无法连接。
我们的设置是:
- Windows机器运行服务器
- 的Apache 2.2和Tomcat 5.5 SSO启用,总内存:128MB,最大内存:512MB
- 春2.0.8的webapp
- 的Oracle 11g
由于注意到这个错误,这就是我们的尝试:
- 检查出的日志 - 似乎没有成为一个模式。 显然,日志只能告诉你,当服务器的内存不足,所以 他们表现出的,而不是点 问题出在哪里开始
- 重新启动服务器
- 重新安装Tomcat的
- 增加量不再工作的地步, Tomcat可以使用的内存 - 这只是延长了这个问题,当然Tomcat吃了就和我们一样吃了
- 全新安装了服务器和Apache + Tomcat
- 生成堆转储 - 没有什么壮观的东西似乎与众不同,大多数内存用于启动t他申请
- 检查DB - 它的优良,快速反应,没有锁
我找出来对自己能做什么的想法。我们总共有5种不同的产品具有相同的设置,这个问题是用户和数据的最小数量。
您是否启用GC日志记录?你的服务器是否在异常时产生堆转储? –
如何去做这件事?作为一名开发人员,我并不以我对服务器管理知之甚少的事实感到自豪。我认为我们设置了热量转储以产生按需和异常内存异常。 – eagerMoose
您是否在监视JVM进程中的内存使用量与请求和加载的数量? –