WEBLOGIC 内存溢出 解决方案
生活随笔
收集整理的這篇文章主要介紹了
WEBLOGIC 内存溢出 解决方案
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
WEBLOGIC?內(nèi)存溢出?解決方案
相關(guān)教程:
?
?
很好聽?聽聽吧
朱禹齊(原創(chuàng))??
正文
?
?
前幾天部署WebLogic出現(xiàn)線程阻塞情況,查看后臺報(bào)錯:<[STUCK]?ExecuteThread:?'58'?for?queue:?'weblogic.kernel.Default?(self-tuning)'?has?been?busy?for?"697"?seconds?working?on?the?request?"Http?Request:?aaa.do",?which?is?more?than?the?configured?time?(StuckThreadMaxTime)?of?"600"?seconds.?Stack?trace:
?????后來在公司文檔中發(fā)現(xiàn)以前所有weblogic的部署使用的JDK都是Sun的,于是沒有進(jìn)行具體的分析就進(jìn)行了更換。
?????今天客戶報(bào)告系統(tǒng)反應(yīng)極慢?,查看后臺發(fā)現(xiàn)包內(nèi)存溢出異常,導(dǎo)致整個系統(tǒng)沒有反應(yīng),于是進(jìn)行了重啟才恢復(fù)。
------------------------------------------------------------------------
??????以下內(nèi)容轉(zhuǎn)自其他Blog
------------------------------------------------------------------------
場景:
用戶培訓(xùn)需要培訓(xùn)環(huán)境,培訓(xùn)環(huán)境搭好后,由于不常更新跑的時間較長,考驗(yàn)系統(tǒng)穩(wěn)定性的時候到了,很可惜穩(wěn)定性這個問題與我們大家的美好愿望一直背道而馳,天天求神拜佛也不行很不給面子,發(fā)現(xiàn)了一個原因解決了又出現(xiàn)了其他引起當(dāng)機(jī)的因素,弄得是焦頭爛額,下面就是我們發(fā)現(xiàn)的一個引起當(dāng)機(jī)的原因,請各位提高警惕。
9月16日系統(tǒng)當(dāng)機(jī),Weblogic報(bào)出java.lang.OutOfMemoryError:?PermGen?space異常,10-15分鐘后就會發(fā)生<[STUCK]?ExecuteThread:?'2'?for?queue:?'weblogic.kernel.Default?(self-tuning)'>?<<WLS?Kernel>>?<>?<>?<1221538218253>?<BEA-000339>?<[STUCK]?ExecuteThread:?'2'?for?queue:?'weblogic.kernel.Default?(self-tuning)'?has?become?"unstuck".>的錯誤,此時domain的控制臺已經(jīng)無法訪問。
排查分析:
1、參考tomcatFAQ:?http://wiki.apache.org/tomcat/FAQ/Deployment中如下內(nèi)容:
Why?does?the?memory?usage?increase?when?I?redeploy?a?web?application??
Because?the?Classloader?(and?the?Class?objects?it?loaded)?cannot?be?recycled.?They?are?stored?in?the?permanent?heap?generation?by?the?JVM,?and?when?you?redepoy?a?new?class?loader?is?created,?which?loads?another?copy?of?all?these?classes.?This?can?cause?OufOfMemoryErrors?eventually.?
Tomcat?FAQ指出SUN?JVM對處于permanent?heap?generation(默認(rèn)4M)的內(nèi)容不做垃圾回收會導(dǎo)致內(nèi)存溢出錯誤。
2、在SUN?官方網(wǎng)站找到一個2003年的bug?Report,http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4957990,Synopsis?:PermHeap?bloat?in?and?only?in?server?VM,直到現(xiàn)在狀態(tài)還是6-Fix?Understood,?沒有修復(fù)。
解決方案:
根據(jù)上面的分析,再結(jié)合我們系統(tǒng)的環(huán)境(Weblogic?使用Solairs系統(tǒng)安裝的JDK5.0)我們可以確定是由于SUN?JVM對permanent?heap?generation?區(qū)域的內(nèi)容不做垃圾回收造成應(yīng)用動態(tài)Load?class文件過多引起的OutOfMemory錯誤。同時提出兩套解決方案:
增加PermGen?space參數(shù)大小?
更換不同廠家JVM
考慮由于開發(fā)采用JDK1.5,換用其他JVM存在風(fēng)險,故修改weblogic啟動服務(wù)調(diào)用的批處理setDomainEnv.sh文件,將其中的一截片斷進(jìn)行修改:
if?[?"${JAVA_VENDOR}"?=?"Sun"?]?;?then
????????MEM_ARGS="${MEM_ARGS}?${MEM_DEV_ARGS}?-XX:MaxPermSize=128m"
????????export?MEM_ARGS
fi
中MaxPermSize改成1024m,驗(yàn)證問題是否存在。
實(shí)施結(jié)果:
系統(tǒng)再未出現(xiàn)OutOfMemoryError運(yùn)行正常.該原因引起的當(dāng)機(jī)問題解決。
從Java的經(jīng)典書籍到Sun的官方網(wǎng)站都在宣揚(yáng)Java的優(yōu)勢之一——垃圾回收,“自動釋放內(nèi)存,減輕編程負(fù)擔(dān)”,可是誰能想到Sun的JVM還有這問題——不回收load?class文件而產(chǎn)生的Class類對象。所以不要迷信權(quán)威,根據(jù)現(xiàn)象一步一步抽絲剝繭、細(xì)心求證才是王道!
--------------------------------------------------------------------------------------------------------------------------
項(xiàng)目大了以后開發(fā)環(huán)境頻繁deploy會導(dǎo)致weblogic報(bào)permGen?錯誤,查了一下,暫時解決的辦法是:?
在weblogic/common/bin/commEnv.sh中配置
MEM_ARGS="-Xms32m?-Xmx200m?-XX:MaxPermSize=128m"
-Xms:內(nèi)存初始值
-Xmx:內(nèi)存最大值(不要超過內(nèi)存的80%)
MaxPermSize:PermGen(Class和Meta存放區(qū)域)區(qū)域內(nèi)存最大值。
可調(diào)整為:
MEM_ARGS="-Xms512m?-Xmx512m?-XX:MaxPermSize=256m"
???-XX:MaxPermSize改為256或512
相關(guān)教程:
?
?
很好聽?聽聽吧
朱禹齊(原創(chuàng))??
正文
?
?
前幾天部署WebLogic出現(xiàn)線程阻塞情況,查看后臺報(bào)錯:<[STUCK]?ExecuteThread:?'58'?for?queue:?'weblogic.kernel.Default?(self-tuning)'?has?been?busy?for?"697"?seconds?working?on?the?request?"Http?Request:?aaa.do",?which?is?more?than?the?configured?time?(StuckThreadMaxTime)?of?"600"?seconds.?Stack?trace:
?????后來在公司文檔中發(fā)現(xiàn)以前所有weblogic的部署使用的JDK都是Sun的,于是沒有進(jìn)行具體的分析就進(jìn)行了更換。
?????今天客戶報(bào)告系統(tǒng)反應(yīng)極慢?,查看后臺發(fā)現(xiàn)包內(nèi)存溢出異常,導(dǎo)致整個系統(tǒng)沒有反應(yīng),于是進(jìn)行了重啟才恢復(fù)。
------------------------------------------------------------------------
??????以下內(nèi)容轉(zhuǎn)自其他Blog
------------------------------------------------------------------------
場景:
用戶培訓(xùn)需要培訓(xùn)環(huán)境,培訓(xùn)環(huán)境搭好后,由于不常更新跑的時間較長,考驗(yàn)系統(tǒng)穩(wěn)定性的時候到了,很可惜穩(wěn)定性這個問題與我們大家的美好愿望一直背道而馳,天天求神拜佛也不行很不給面子,發(fā)現(xiàn)了一個原因解決了又出現(xiàn)了其他引起當(dāng)機(jī)的因素,弄得是焦頭爛額,下面就是我們發(fā)現(xiàn)的一個引起當(dāng)機(jī)的原因,請各位提高警惕。
9月16日系統(tǒng)當(dāng)機(jī),Weblogic報(bào)出java.lang.OutOfMemoryError:?PermGen?space異常,10-15分鐘后就會發(fā)生<[STUCK]?ExecuteThread:?'2'?for?queue:?'weblogic.kernel.Default?(self-tuning)'>?<<WLS?Kernel>>?<>?<>?<1221538218253>?<BEA-000339>?<[STUCK]?ExecuteThread:?'2'?for?queue:?'weblogic.kernel.Default?(self-tuning)'?has?become?"unstuck".>的錯誤,此時domain的控制臺已經(jīng)無法訪問。
排查分析:
1、參考tomcatFAQ:?http://wiki.apache.org/tomcat/FAQ/Deployment中如下內(nèi)容:
Why?does?the?memory?usage?increase?when?I?redeploy?a?web?application??
Because?the?Classloader?(and?the?Class?objects?it?loaded)?cannot?be?recycled.?They?are?stored?in?the?permanent?heap?generation?by?the?JVM,?and?when?you?redepoy?a?new?class?loader?is?created,?which?loads?another?copy?of?all?these?classes.?This?can?cause?OufOfMemoryErrors?eventually.?
Tomcat?FAQ指出SUN?JVM對處于permanent?heap?generation(默認(rèn)4M)的內(nèi)容不做垃圾回收會導(dǎo)致內(nèi)存溢出錯誤。
2、在SUN?官方網(wǎng)站找到一個2003年的bug?Report,http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4957990,Synopsis?:PermHeap?bloat?in?and?only?in?server?VM,直到現(xiàn)在狀態(tài)還是6-Fix?Understood,?沒有修復(fù)。
解決方案:
根據(jù)上面的分析,再結(jié)合我們系統(tǒng)的環(huán)境(Weblogic?使用Solairs系統(tǒng)安裝的JDK5.0)我們可以確定是由于SUN?JVM對permanent?heap?generation?區(qū)域的內(nèi)容不做垃圾回收造成應(yīng)用動態(tài)Load?class文件過多引起的OutOfMemory錯誤。同時提出兩套解決方案:
增加PermGen?space參數(shù)大小?
更換不同廠家JVM
考慮由于開發(fā)采用JDK1.5,換用其他JVM存在風(fēng)險,故修改weblogic啟動服務(wù)調(diào)用的批處理setDomainEnv.sh文件,將其中的一截片斷進(jìn)行修改:
if?[?"${JAVA_VENDOR}"?=?"Sun"?]?;?then
????????MEM_ARGS="${MEM_ARGS}?${MEM_DEV_ARGS}?-XX:MaxPermSize=128m"
????????export?MEM_ARGS
fi
中MaxPermSize改成1024m,驗(yàn)證問題是否存在。
實(shí)施結(jié)果:
系統(tǒng)再未出現(xiàn)OutOfMemoryError運(yùn)行正常.該原因引起的當(dāng)機(jī)問題解決。
從Java的經(jīng)典書籍到Sun的官方網(wǎng)站都在宣揚(yáng)Java的優(yōu)勢之一——垃圾回收,“自動釋放內(nèi)存,減輕編程負(fù)擔(dān)”,可是誰能想到Sun的JVM還有這問題——不回收load?class文件而產(chǎn)生的Class類對象。所以不要迷信權(quán)威,根據(jù)現(xiàn)象一步一步抽絲剝繭、細(xì)心求證才是王道!
--------------------------------------------------------------------------------------------------------------------------
項(xiàng)目大了以后開發(fā)環(huán)境頻繁deploy會導(dǎo)致weblogic報(bào)permGen?錯誤,查了一下,暫時解決的辦法是:?
在weblogic/common/bin/commEnv.sh中配置
MEM_ARGS="-Xms32m?-Xmx200m?-XX:MaxPermSize=128m"
-Xms:內(nèi)存初始值
-Xmx:內(nèi)存最大值(不要超過內(nèi)存的80%)
MaxPermSize:PermGen(Class和Meta存放區(qū)域)區(qū)域內(nèi)存最大值。
可調(diào)整為:
MEM_ARGS="-Xms512m?-Xmx512m?-XX:MaxPermSize=256m"
???-XX:MaxPermSize改為256或512
總結(jié)
以上是生活随笔為你收集整理的WEBLOGIC 内存溢出 解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人寿易学堂怎么注销
- 下一篇: Lucene.Net---1索引的建立