排坑(二):线上问题排查流程

  • 原则

在保留现场的情况下尽快的恢复线上服务正常

  • JVM健康状态

堆内存的涨幅趋势,GC 曲线等数据

jvm crash诊断工具:https://github.com/xpbob/CrashAnalysis

  • prometheus界面查看
  • 若没有接入prometheus,直接登录问题所在服务器查看

JVM参数加上 -XX:+HeapDumpOnOutOfMemoryError 参数,该参数作用是:在程序内存溢出时输出 dump 文件。

可能故障服务器中并没有配置JAVAHOME,导致不能直接使用java命令.javahome配置方法:

1.vi ~/.base_profile

输入如下信息(按情况配置jdk目录):

JAVA_HOME=/usr/local/env/jdk1.8/

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

export PATH

2.source ~/.base_profile

 

  1. jmap (对象的情况)

jmap -histo[:live]

jmap -dump:[live,]format=b,file=

示例:jmap -dump:format=b,file=0920_1420.dump 7939

  1. jstat (堆的使用情况)

通过GC的频率和时长判断GC情况是否正常

jstat -gc

jstat -gcutil

  1. jstack (线程堆栈信息)

jstack

jstack >> hrecord.txt 输出到文件

 

 

  • 网络状态
  • netstat
  • 服务器状态
  • 磁盘空间

df

df -h

  • 服务器资源

top 各进程资源占用情况 包括CPU、Men等

 

  • 数据库连接池
  • 线程池

线程池大小、队列大小、最大线程数等数据

  • 查看日志有没有业务的异常
  • 有没有调用其他服务的超时,是否在方法的同步流程中
  • 有没有频繁的日志打印在比较耗时的方法中

你可能感兴趣的:(排坑)