线上Java应用排查和诊断规范
標(biāo)準(zhǔn)做法一:OOM觸發(fā)HeadpDump
目的:
OOM發(fā)生時(shí),輸出堆棧快照文件,供研發(fā)人員分析。
在JVM中,如果98%的時(shí)間是用于 GC 且可用的 Heap size 不足2%的時(shí)候,將拋出 OOM 異常。
配置操作:
Resin/Tomcat 配置文件里追加?-XX:+HeapDumpOnOutOfMemoryError?,當(dāng)?OutOfMemoryException?錯(cuò)誤發(fā)生時(shí),會(huì)自動(dòng)生成?Heap Dump?文件。
同時(shí)配置?-XX:HeapDumpPath?指定快照文件的實(shí)際路徑。
日志分析:
Heap Dump文件的分析,可以使用?Eclipse Memory Analyzer tool(MAT)?分析。
?
標(biāo)準(zhǔn)做法二:系統(tǒng)負(fù)載高觸發(fā)ThreadDump
目的:
系統(tǒng)負(fù)載大于10時(shí),調(diào)用?jstack?命令,輸出 resin 線程快照,供研發(fā)人員分析。
配置操作:
一分鐘掃描一次。如果系統(tǒng)的一分鐘負(fù)載值(load1)大于10,或者80端口的連接數(shù)大于80時(shí),進(jìn)行打印。
日志分析:
Thread Dump文件的分析,可以使用?Thread Dump Analyzer(TDA)分析。
?
可選做法三:年老代使用率高觸發(fā)HeapDump
目的:
Java工程的 OU/OC?到報(bào)警閾值時(shí),調(diào)用 jmap 命令,輸出堆棧快照,供研發(fā)人員分析。
OC 當(dāng)前年老代空間容量。Current old space capacity (KB).
OU 年老代利用情況。Old space utilization (KB).
配置操作:
Nagios 監(jiān)控到特定工程的 OU/OC?大于80%時(shí),自動(dòng)執(zhí)行命令:jmap –dump:file={filename},format=b pid
日志分析:
多個(gè)Heap Dump文件的對照,使用 VisualVM 的比較內(nèi)存快照功能。
?
標(biāo)準(zhǔn)做法四:默認(rèn)開啟GC打印
目的:
打印 GC 詳細(xì)信息,供研發(fā)人員分析。
-XX:+PrintGC:輸出形式:[GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails:輸出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
-XX:+PrintGCTimeStamps:輸出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]
-Xloggc:filename:輸出GC信息到日志文件。
配置操作:
Resin/Tomcat 配置文件里,增加如下參數(shù):
<jvm-arg>-XX:+PrintGCTimeStamps</jvm-arg>
<jvm-arg>-XX:+PrintGCDetails</jvm-arg>
<jvm-arg>-Xloggc:/data/application/%ProjectName%/logs/gc.log</jvm-arg>
?
鄭昀?2013
-over-
?
贈(zèng)圖一枚:
?
?
總結(jié)
以上是生活随笔為你收集整理的线上Java应用排查和诊断规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: resin常见有关问题
- 下一篇: java美元兑换,(Java实现) 美元