生产问题定位

  1. 排除应用之外的影响因素: top(cpu)、free(内存)、df(磁盘)、dstat(网络流量)、pstackvmstatst1race(底层系统调用)

  2. top 定位CPU 最高的进程

  3. top -Hp pid 定位使用 CPU 最高的线程(或者 ps -mp pid -o THREAD,tid,time

  4. printf '0x%x' tid 线程 id 转化 16 进制

  5. jstack pid | grep tid 找到线程堆栈

    5.1 gc线程(如下是查看gc情况的几种方式)

  6. 查看gc 日志

  7. jstat -gcutil 进程号 统计间隔毫秒 统计次数(缺省代表一致统计

  8. 如果所在公司有对应用进行监控的组件当然更方便(比如Prometheus + Grafana)

    5.2 业务线程

  9. 关注线程堆栈的lock字段

  10. jstack -l pid | grep BLOCKED 查看阻塞态线程堆栈

最后更新于