閱讀177 返回首頁    go 阿裏雲 go 技術社區[雲棲]


線上Java應用排查和診斷規範

線上Java應用排查和診斷規範

https://www.iteye.com/topic/1132132


標準做法一:OOM觸發HeadpDump

目的:

OOM發生時,輸出堆棧快照文件,供研發人員分析。

在JVM中,如果98%的時間是用於 GC 且可用的 Heap size 不足2%的時候,將拋出 OOM 異常。

配置操作:

Resin/Tomcat 配置文件裏追加 -XX:+HeapDumpOnOutOfMemoryError ,當 OutOfMemoryException 錯誤發生時,會自動生成 Heap Dump 文件。

同時配置 -XX:HeapDumpPath 指定快照文件的實際路徑。

日誌分析:

Heap Dump文件的分析,可以使用 Eclipse Memory Analyzer tool(MAT) 分析。

 

標準做法二:係統負載高觸發ThreadDump

目的:

係統負載大於10時,調用 jstack 命令,輸出 resin 線程快照,供研發人員分析。

配置操作:

一分鍾掃描一次。如果係統的一分鍾負載值(load1)大於10,或者80端口的連接數大於80時,進行打印。

日誌分析:

Thread Dump文件的分析,可以使用 Thread Dump Analyzer(TDA)分析。

 

可選做法三:年老代使用率高觸發HeapDump

目的:

Java工程的 OU/OC 到報警閾值時,調用 jmap 命令,輸出堆棧快照,供研發人員分析。

OC 當前年老代空間容量。Current old space capacity (KB).

OU 年老代利用情況。Old space utilization (KB).

配置操作:

Nagios 監控到特定工程的 OU/OC 大於80%時,自動執行命令:jmap –dump:file={filename},format=b pid

日誌分析:

多個Heap Dump文件的對照,使用 VisualVM 的比較內存快照功能。

 

標準做法四:默認開啟GC打印

目的:

打印 GC 詳細信息,供研發人員分析。

-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 配置文件裏,增加如下參數:

<jvm-arg>-XX:+PrintGCTimeStamps</jvm-arg>

<jvm-arg>-XX:+PrintGCDetails</jvm-arg>

<jvm-arg>-Xloggc:/data/application/%ProjectName%/logs/gc.log</jvm-arg>

 

最後更新:2017-04-03 15:22:03

  上一篇:go android 輕鬆實現在線即時聊天【圖片、語音、表情、文字】等!含源碼!
  下一篇:go Android自定義長按事件