首页  

问题排查命令和工具及实战案例     所属分类 architecture 浏览量 2724
接口慢 

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

领悟人生金句