2

我有一个在 IBM Websphere 7.0.0.19 中运行的独立应用程序。它在 Java 6 中运行,我们在 EAR 中打包了一个 Axis2 JAR。我们加载了“最后一个父级”样式类,并且我们禁用了默认情况下与 WAS7 一起打包的 Axis 服务。

最近,在连续运行 6 周以上后,该应用程序出现了 OOM。令人困惑的是,应用程序分别部署在 2 台不同的机器上。但只有一台机器坏了。第二台机器还在。

我们使用 WAS 控制台检查了操作系统、服务器配置(如类加载器策略),它们在两台机器上都是相似的。

当应用程序崩溃时,它会生成一个 .phd 文件,我们使用 Eclipse 内存分析器工具 (MAT) 对其进行分析。分析显示在屏幕截图中。

Eclipse 内存分析工具输出

如果我是正确的,则引导类加载器会重复加载并保留 AxisConfiguraiton 的引用,因此 GC 在运行时无法收集它们。但是,如果是这种情况,那么两台服务器都必须停机。但只有一台服务器经历了 OOM。分配给 JVM 的内存在两台机器上是相同的。

我们不确定问题出在 WAS 7 上,还是与 axis2-kernel-1.4.1.jar 或其他问题有关。

http://www.slideshare.net/leefs/axis2-client-memory-leak
https://issues.apache.org/jira/browse/AXIS2-3870
http://java.dzone.com/articles/12-岁的 bug-jdk 仍然存在

(链接可能不涉及当前问题。但它们只是指针)

有没有人经历过类似的事情?

4

1 回答 1

0

过去,我们在 Axis 2 1.4 上看到 WebSphere 6.1 上的内存增长和套接字保持打开状态。已经很长时间了,但我的笔记建议可能值得考虑升级到至少 Axis 2 1.5.1 以修复这个带有开放套接字的错误,并确保您不会在存在单例的地方重复创建新对象(例如服务对象)。

于 2013-01-16T17:34:43.997 回答