排查Java宕机,weblogic宕机问题排查
1、問題現象:
系統持續運行2-3天,中間件出現宕機
系統運行期間只要訪問weblogic控制臺,操作幾次后中間件宕機
2、報錯日志:
22.png
3、分析:
通過報錯日志分析,為內存溢出,且為非堆內存溢出,這種情況一般需要調整:PermSize的大小。
4、解決過程:
調整weblogic配置參數:setDomainEnv.sh 設置setDomainEnv.sh 為512。
調整后重啟系統,發現問題依舊,并沒有解決宕機問題。
確認修改參數是否生效:生成javacore來分析(kill -3 進程ID)截圖如下:
11.png
我們發現參數并沒有生效。繼續分析參數為什么沒有生效。
Weblogic中的 commEnv.sh ,發現JAVA_VENDOR為 N/A
33.png
而setDomainEnv.sh 中PermSize 的設置為:
44.png
此處的參數并沒有 設置我們需要的Open JDK的 JAVA_VENDOR的N/A 的賦值,所以非堆內存的設置并未生效。
注意:正常 open jdk 的JAVA_VENDOR 為Oracle的,但是配置文件卻為:N/A,可能是weblogic的兼容性問題,或者人為改動導致,找到原因了,這個問題就沒有細究。
5、解決方案:
修改commEnv.sh , JAVA_VENDOR為 Oracle、HP、IBM、Apple中的任何一個
在startWeblogic中,單獨定義:MEM_ARGS="-Xms2048m -Xmx2048m -XX:PermSize=1024m"
6、驗證方案:
采取第二種方案:
1)在原始默認環境,進行12個小時的循環操作,并持續訪問weblogic控制臺。
2)在修改后的環境,持續訪問weblogic控制臺,生成javacore文件看參數是否生效。并進行50人高強度的并發測試20個小時,看是否會重現宕機問題。
在方案的第一步,系統運行2小時,訪問控制臺,中間件宕機,系統無法訪問。
在方案的第二步,系統在50人高強度的并發測試20小時的情況下,響應正常。頻繁訪問控制臺并未發現任何異常。通過生成javacore 發現非堆內存正常生效。
55.png
總結
以上是生活随笔為你收集整理的排查Java宕机,weblogic宕机问题排查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝 Android 端图片体验优化实践
- 下一篇: 【转】基于OAI-PMH的元数据搜索引擎