JVM調整:應對jvm crash 【轉自螞蟻小窩】

nighthun發表於2007-08-24
半個月來,新的網站伺服器執行可靠性急遽下降,主要原因是jvm crash。而引起jvm crash的原因也都與java GC(Garbage Collection)相關。
查了一下sun的文件“Trouble-Shooting and
Diagnostic Guide",總算有了點初步的認識。檢查4個jvm 崩潰時的文件(hs_err_pidXXXX),原因完全一致:
An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0x010d2d9e, pid=8089, tid=5417904
#
# Java VM: Java HotSpot(TM) Server VM (1.5.0_07-b03 mixed mode)
# Problematic frame:
# V [libjvm.so+0x3efd9e].......................

再查,初步判斷jvm崩潰的原因是permsize不足所致。因為系統大量使用了spring beans,jvm需要較多地使用 Permanent Generation Heap來儲存reflective data。
解決方案是:在JAVA_OPTS加上-XX:MaxPermSize=128m,jdk5.0預設的初始值為8Mb(client)/16Mb(server),最大值為64Mb.
現在Perm Generation只是使用了68%,而之前4次jvm崩潰是,該值均為99%.
新伺服器的可用性問題是否因此得到解決,還有待觀察。
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/106943/viewspace-965577/,如需轉載,請註明出處,否則將追究法律責任。

相關文章