我們在prod環境中的應用程序在生成頻繁的堆/線程轉儲時運行非常大的報表,最終導致JVM故障。 WebSphere是所有節點上的服務器和堆大小設置爲1024/2048(初始/最大)。Websphere - 生成頻繁的線程/堆轉儲
有什麼方法可以解決這個問題?我可以考慮以下選項。還有什麼我失蹤?
將最小/最大堆大小設置爲2048甚至更高?
在WebSphere中啓用詳細垃圾收集並分析最佳堆大小?
螺紋分析: 可運行:123(67%) 封鎖:16(9%) 等待上條件:43(23%)
我們在prod環境中的應用程序在生成頻繁的堆/線程轉儲時運行非常大的報表,最終導致JVM故障。 WebSphere是所有節點上的服務器和堆大小設置爲1024/2048(初始/最大)。Websphere - 生成頻繁的線程/堆轉儲
有什麼方法可以解決這個問題?我可以考慮以下選項。還有什麼我失蹤?
將最小/最大堆大小設置爲2048甚至更高?
在WebSphere中啓用詳細垃圾收集並分析最佳堆大小?
螺紋分析: 可運行:123(67%) 封鎖:16(9%) 等待上條件:43(23%)
一個好的起點,開始調查OOM是this IBM KnowledgeCenter topic
由於您看到您遇到OutOfMemory問題,因此需要考慮三種可能性:
解決方案:你必須負載測試你有相應的生產類業務和調整您的最小/最大堆大小的應用程序。
解:使用IBM Support Assistant tools分析heapdumps /核心轉儲製備。 PMR到IBM會有所幫助。
解決方案:打開PMR
這裏是一個nice read關於Java的內存管理的WAS環境。
嘗試從生產環境中捕獲內存,垃圾收集信息。我不確定GC日誌是否有任何性能影響。但是,jstat是一個非常輕量級的工具,可以在生產環境中使用,不會對性能造成任何影響。轉儲jstat輸出在使用下面的命令(在這裏,我的時間間隔設置爲1小時)定期:
jstat -gc <PID> 3600s
你有webphere-MQ標記,但我沒有看到MQ的任何提及這個問題。您是否應該爲App Server專家添加一些標籤來查看此問題? –
作爲轉儲創建觸發器的轉儲記錄是什麼? OutOfMemoryError異常? –
@MoragHughson:感謝指針,它應該是websphere而不是websphere-mq。 –