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