问题排查命令和工具及实战案例
所属分类 architecture
浏览量 2924
接口慢
arthas
trace
方法内部调用路径,并输出方法路径上的每个节点上耗时
watch
方法执行数据观测
输入 返回值 异常 查看
arthas使用
CPU、磁盘、内存以及网络
df free top
jstack jmap
ps -ef | grep xxx
CPU 过高
业务逻辑问题(死循环) 频繁gc 上下文切换过多
CPU使用较高的线程
top -H -p pid
pid 转换为 16 进制printf '%x\n'
可以使用 arthas
查看 cpu使用最多的7个线程及堆栈信息
thread -n 7
"queryThread" Id=11 cpuUsage=28% RUNNABLE
arthas使用
jstack pid |grep XXX
线程状态
WAITING TIMED_WAITING BLOCKED
jstack 59299 | grep "java.lang.Thread.State" | sort | uniq -c | sort -nr
11 java.lang.Thread.State: RUNNABLE
4 java.lang.Thread.State: WAITING (parking)
2 java.lang.Thread.State: WAITING (on object monitor)
2 java.lang.Thread.State: TIMED_WAITING (parking)
1 java.lang.Thread.State: TIMED_WAITING (on object monitor)
频繁 gc
jstat -gc pid 1000
Survivor 区、Eden 区、老年代、元数据区的容量和使用量
YoungGc、FullGc 的耗时和次数以及总耗时
上下文切换
vmstat 1
cs(context switch) 上下文切换次数
pidstat -p pid -w
cswch 和 nvcswch 表示自愿及非自愿切换
-w Report task switching activity (kernels 2.6.23 and later only).
-c CPU
-r 内存
-d 磁盘
df -lh
-h, --human-readable
-l, --local local file systems
iostat -d -k -x 1
-d Display the device utilization report.
-k Display statistics in kilobytes per second.
-x Display extended statistics.
读写速度
iotop
lsof -p pid
cat /proc/PID/io
rchar: 164704690
wchar: 957284332
syscr: 376351
syscw: 313607
read_bytes: 156217344
write_bytes: 1031532544
cancelled_write_bytes: 5472256
rchar 读出的总字节数,read或者pread中的长度参数总和(pagecache统计,不代表实际磁盘的读入)
wchar 写入的总字节数,write或者pwrite中的长度参数总和
syscr read 或者pread 总的调用次数
syscw write 或者 pwrite 总的调用次数
read_bytes 实际从磁盘中读取的字节数
write_bytes 实际写入到磁盘中的字节数
cancelled_write_bytes 由于截断pagecache导致应该发生而没有发生的写入字节数(可能为负数)
iopp
Linux i/o statistics per process
https://github.com/markwkm/iopp/blob/master/iopp.c
c++ 版本
https://github.com/hackerforward/iopp
内存问题
OOM 和 Stack Overflow
java内存溢出几种情况
内存泄漏
heap dump
MAT 工具
获取jvm heap dump 的几种方式
MAT内存泄露分析实战
堆外内存
java堆外内存回收机制
堆外内存使用实例
OutOfDirectMemoryError
OutOfMemoryError: Direct buffer memory
GC 问题
开启GC日志
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps
线程堆栈在线分析工具
https://fastthread.io/
GC日志在线分析工具 GC easy
https://www.gceasy.io/
网络
网络问题排查要点
TIME_WAIT 和 CLOSE_WAIT
主动关闭的一方 进入 timewait 状态
linux运维常用命令
jdk jcmd 使用
jdk自带工具使用
java内存溢出
MAT内存泄露分析实战
Linux Load 查看及计算
linux进程分析方法汇总
linux sort 命令
线上问题排查常用命令
性能及问题排查合集
网络问题排查要点
线上故障处理
java8 jvm 参数
CMS JVM参数介绍
gc日志相关参数
堆内存结构及GC触发条件
java应用oom被kill排查记录
上一篇
下一篇
装逼词汇大全
springboot 使用 servlet 过滤器
springboot 使用 拦截器
maven-shade-plugin 使用指南
maven-assembly-plugin 和 maven-shade-plugin
领悟人生金句