3

我正在调查我们的应用程序的缓慢情况,最终导致集群环境中的一个实例出现故障。几周前,我遇到了以下错误:

[#|2012-05-11T14:12:03.460-0400|SEVERE|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=89;_ThreadName=httpSSLWorkerThread-7311-0;_RequestID=7afaee11-c970-40dd-b5fb-29498af8e512;|StandardWrapperValve[LoginModule]: PWC1406: Servlet.service() for servlet LoginModule threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded

我认为由于超过了 GC 开销限制,这与我的应用程序有关。有一份报告非常详细地使用 POI 将记录放入 excel 中,所以我认为这可能是导致它的原因。作为短期修复,在下一个版本之前,我们通知 1 位有权访问此报告的用户不要访问它。

然而,今天,两周后,其中一个实例再次出现故障,在搜索日志时,我发现以下错误:

[#|2012-06-05T10:31:36.532-0400|SEVERE|sun-appserver2.1|net.jxta.impl.endpoint.mcast.McastTransport|_ThreadID=141;_ThreadName=IP Multicast Listener for mcast://228.8.10.93:31676;_RequestID=90caf76e-b740-4f11-8ffe-8ab88a740569;|Uncaught Throwable in thread :IP Multicast Listener for mcast://228.8.10.93:31676
java.lang.OutOfMemoryError: Java heap space
|#]

请注意GC overhead limit exceeded与. 的区别Java heap space。我试图找出我今天看到的错误是否是由用户访问报告的相同原因引起的,但是,我相信如果是这样的话,我会看到GC overhead limit exceeded

我相信今天的错误更多的是与服务器的配置有关。

请帮助澄清。

4

2 回答 2

2

第一个错误“GC Overhead”意味着 GC 占用了大部分 CPU 周期,主要是指 98% 或 99%,并且在每次运行中释放的内存非常少 1-2%。

第二个错误意味着您的应用程序在某些处理期间内存不足。

此外,您对 POI 使用过多内存的调查是正确的,POI 有额外内存消耗的历史。

遇到了关于 SO 的非常好的讨论

于 2012-06-05T17:23:28.700 回答
0

这里有一个关于类似主题的很好的讨论。基本上是因为GC消耗了很多时间,但回收的内存很少。

于 2012-06-05T17:24:18.260 回答