2013-01-14 98 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

相關問題