【发布时间】:2015-04-24 17:29:40
【问题描述】:
我正在运行 tomcat7 服务,该服务处理来自客户的大量负载。我在一个周末离开了应用程序,当我回来时,我注意到 tomcat CPU 使用率增加到 99%,并且在日志中我发现了以下错误:
Exception in thread "http-bio-8080-exec-908" java.lang.OutOfMemoryError: Java heap space
Exception in thread "http-bio-8080-exec-948" java.lang.OutOfMemoryError: Java heap space
这是否意味着在我遇到 OutOfMemory 异常时,我打开了 908 和 948 个活动线程?
目前我的 tomcat 在默认配置下运行,我还没有增加堆大小。
我们收到了大约200 queries/sec。
My hardware:
CPU : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Memory: 2GB
您能否指出我正确的方向,我应该看什么才能解决这个问题。
感谢您的帮助!
【问题讨论】:
-
2 GB 对于服务器系统来说似乎很低,我建议至少获得 8 GB。尝试将 Java 参数 -Xms 和 -Xmx 设置为至少 1 GB。和往常一样检查你的代码,看看你是否忘记清理东西。
-
请将常用的jar文件移动到tomcat的lib文件夹中
-
@Davio “2GB 对于服务器系统来说似乎很低”是一个毫无意义的短语。它真的取决于服务器的类型,当然还有负载。我的服务器运行良好,512Mb 或更少,而其他服务器需要 128Gb。
-
通常会在不知道为什么达到顶部的情况下放置更多内存,只是掩盖内部问题。我建议您分析您的内存并尝试找出服务器资源在哪里(以及为什么,也许只是需要,根本没有糟糕的编程),或者为什么它们在使用后没有正确释放。
-
如果应用程序内存不断增加,它可能在某些时候出现内存泄漏,就像 exoddus 所说的那样。值得花一些时间来分析它。
标签: java tomcat heap-memory