zoukankan      html  css  js  c++  java
  • 线上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 当前年老代空间容量。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>

     

    郑昀 2013

    -over-


    赠图一枚:

    http://ww3.sinaimg.cn/mw1024/6544eee9gw1e8xznmq4p5j20vg0istb0.jpg

  • 相关阅读:
    ReentrantLock和AQS
    CAS
    java8中ConcurrentHashMap
    java8中的HashMap
    TCP和UDP
    慢查询日志和profiling
    explain的使用
    select、poll、epoll之间的区别
    I/O模型
    生产者-消费者模式
  • 原文地址:https://www.cnblogs.com/zhengyun_ustc/p/java.html
Copyright © 2011-2022 走看看