线上Java应用排查和诊断规范
@郑昀 整理 标准做法一: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