Websphere - 频繁的线程/堆转储生成

时间:2016-10-25 14:19:30

标签: jvm websphere heap-memory heap-dump thread-dump

我们在prod环境中的应用程序正在生成频繁的堆/线程转储,同时运行非常大的报告,最终导致JVM失败。 WebSphere是服务器,并且堆大小在所有节点上设置为1024/2048(初始/最大)。

有哪些方法可以解决这个问题?我可以考虑以下选项。还有什么我想念的吗?

  1. 将最小/最大堆大小设置为2048甚至更高?

  2. 在WebSphere中启用详细垃圾回收并分析最佳堆大小?

  3.   

    线程分析:   Runnable:123(67%)   被封锁:16(9%)   等待条件:43(23%)

3 个答案:

答案 0 :(得分:0)

开始调查OOM的一个好的起点是this IBM KnowledgeCenter topic

答案 1 :(得分:0)

由于您似乎遇到OutOfMemory问题,因此有三种可能性需要考虑:

  • 您的应用始终需要更多内存来处理当前负载。

解决方案:您必须使用类似生产的流量加载测试您的应用,并相应调整最小/最大堆大小。

  • 您遇到内存泄漏问题。

解决方案:分析使用 IBM Support Assistant tools 生成的heapdumps / coredump。对PM的PMR会有所帮助。

  • Websphere内存泄漏。

解决方案:打开PMR

这是关于WAS环境中Java内存管理的nice read

答案 2 :(得分:0)

尝试从生产环境中捕获内存,垃圾收集信息。我不确定GC日志是否会对性能产生任何影响。但是,jstat是一种重量极轻的工具,可以在生产环境中使用,不会对性能产生任何影响。使用以下命令定期转储jstat的输出(这里我将间隔设置为1小时):

jstat -gc <PID> 3600s