2013-01-14 103 views
2

我有一个在IBM Websphere 7.0.0.19中运行的独立应用程序。它运行在Java 6中,我们在我们的EAR中包装了一个Axis2 JAR。我们有'父最后'样式类加载,并且我们已经禁用了默认情况下与WAS7一起打包的Axis服务。使用Axis2和WAS时发生Java内存泄漏7

最近,连续运行6个星期后,应用程序经历了一次OOM。令人困惑的一点是,该应用程序分别部署在2台不同的机器上。但只有一台机器停机。第二台机器还在。

我们使用WAS控制台检查了操作系统,服务器配置类加载器策略,并且它们在两台计算机中都相似。

当应用程序崩溃时,它会生成一个.phd文件,我们使用Eclipse Memory Analyzer Tool(MAT)分析该文件。分析显示在屏幕截图中。

Eclipse Memory Analysis Tool Output

如果我是正确的引导类加载器是重复加载和持有至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-year-old-bug-jdk-still-out

(链接可能不是指当前的问题,但他们只是指针)

任何人都经历类似的东西?

+0

您可以在7.0.0.25上试用它(排除其在websphere中的错误) –

+0

@AviramSegal - WAS 7.0.0.19中是否存在可能导致此问题的已知错误?即使我改变了这一点,你不认为这将需要大量的时间来复制这个问题。 另外,如果它是Websphere的错误,为什么没有第二台服务器停机?只有一台服务器经历了OOM,另一台服务器仍然在运行。 –

+0

没有具体的我知道,但你永远不会知道。另外,这个[question](http://stackoverflow.com/questions/9779287/ibm-websphere-8-memory-leaks-with-axis2-web-services)可能是相关的 –

回答

0

过去,我们看到内存增长和套接字在WebSphere 6.1上以Axis 2 1.4保持打开状态。这已经很长时间了,但我的笔记建议可能需要考虑升级至少Axis 2 1.5.1来修复this bug with the open sockets,并且确保您不会在单例存在的情况下重复创建新对象(例如Service对象) 。

+0

所以,这是Axis 2而不是WebSphere 7的问题? –

+0

可能。在我们的例子中,它与Axis以及我们的应用程序使用它的方式都是一样的。 – dbreaux

+0

噢,我可以说我们最终退出使用Axis的自定义部署,而是使用WebSphere Feature Pack for Web Services提供的内容。 – dbreaux

相关问题