问题排查总览

Nginx Ingress 返回 504 Gateway Time-out

1.JVM内存飙高   ->   GC线程Full GC / CPU负载飙高   ->   应用程序无法处理外部请求或请求缓慢    案例
2.业务线程耗时计算   ->   CPU负载飙高   ->   应用程序无法处理外部请求或请求缓慢
3.业务线程访问数据库   ->   MySQL CPU负载飙高   ->   应用程序无法处理外部请求或请求缓慢

          
# 进程每个线程CPU使用率
1.top -Hp <PID>   按P(即shift + p) 按照CPU使用率从高到低排序
2.jstack <PID> | grep -A10 nid=0x$(printf "%x\n" <LWP>)
2.jstack <PID> | grep -A10 nid=<LWP>


# 实例个数以及占用内存大小
1.jmap -histo:live <PID> | { head -n 2; tail -n +3 | sort -k3 -nr; } | head -20 (会触发一次 Full GC)
2.jmap -histo <PID> | { head -n 2; tail -n +3 | sort -k3 -nr; } | head -20
3.jmap -histo <PID> > ./histo.txt   ->   grep <关键字> histo.txt | sort -k3 -nr | head -n 10



# 堆信息
jmap -heap <PID>
# 堆内存dump
jmap -dump:format=b,file=dump.hprof <PID>

# GC 每隔500毫秒输出一次GC数据 (绝对值模式 单位KB)
jstat -gc <PID> 500
wget https://t.infuq.com/dl/jstat.sh && bash jstat.sh <PID> 500
# GC 每隔500毫秒输出一次GC数据,总共输出10次 (利用率模式)
jstat -gcutil <PID> 500 10

# 类加载
jar -tvf FlinkListener.jar | grep mysql.*.jar
java -XX:+TraceClassLoading -jar FlinkListener.jar > FlinkListener.log &
          
        


1.普罗米修斯查看CPU使用率和负载, 内存(虚拟内存大小 + committed内存大小 + 已使用内存大小), GC, HTTP响应时间, 数据库连接池等信息
2.数据库实例监控/DAS控制台
3.ECS主机监控/云监控
4.报警规则
5.MQ
6.类加载顺序
7.MySQL例行检查常用SQLv8.0