分析定位问题思路

一、查看现场

查看现场包括如下几个步骤:

1、快照分析

  • 功能:观察程序当前的状态
  • 场景:检查程序当前是否处于整体异常状态
  • 举例:gdb、Xmap、mat、jstack

    Dump的时候系统容易挂掉,因此在JVM里加了个参数,在OOM的时候自动dump内存:-XX:+HeapDumpOnOutOfMemeryError

   参见:http://ifeve.com/one-java-oom/#more-25597

2、调用分析

  • 功能:观察调用和调用栈
  • 场景:请求出错、请求慢、偶发错误
  • 举例:btrace、Xtrace

关于Btrace的详细操作指南请参见:https://yq.aliyun.com/articles/7569?spm=5176.100239.yqblog1.102.DGWrRf

                                                          http://blog.csdn.net/chaofanwei/article/details/20224339

3、聚合分析

  • 功能:按某些维度采样、聚合和对比数据
  • 场景:查找性能问题
  • 举例:perf、Xstat、Xtop

 相应性能工具汇总请参考:http://blog.jobbole.com/76103/

 二、瓶颈分析

      在分析问题经常会碰到一些瓶劲问题,可以采用如下方式来进行分析:

     1、观察

      如:通过perf发现close系统调用消耗了大量CPU;

    2、重现

     如:通过jstack发现大量线程卡在NIO的CloseIntFD上;

   3、分析

   如:通过strace发现close系统调用的处理时间较长;

参见:http://iamzhongyong.iteye.com/blog/1441285

原文地址:https://www.cnblogs.com/moonandstar08/p/5331065.html