前言

我们在工作中总是会遇到各种线上问题,那么如果快递定位、排查、解决问题就是一个优秀工程师重要指标之一。下面我们会介绍常见线上问题及排查方案。

问题汇总

堆内存问题:

指令:

1
2
3
4
5
6
jmap -heap 27900

jmap -histo:live pid
jmap -F -histo:live 1230

jmap -F -dump,format=b,file=/home/xiaoju/a.log 1230

gc异常:

指令:

1
jstat -gc 1230 5000 10

上下文切换:

指令:

1
2
vmstat
pidstat -w pid

线程导致的cpu飙高问题:

指令:

1
2
3
4
5
pstreee -p pid |wc -l  查看线程总数
1、top -H -p pid
2、printf '%x\n' pid
3、jstack pid |grep 'nid' -C5 –color jstack -l 1230 >1.txt
4、cat jstack.log | grep "java.lang.Thread.State" | sort -nr | uniq -c

磁盘问题:

指令:

1
2
3
1、iostatiostat -d -k -x   磁盘读写情况
2、cat /proc/pid/io
3、lsof -p pid

网络问题:

指令:

1
2
3
4
5
netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
sysctl -a | grep port
1、netstat -s | egrep "listen|LISTEN" 查看半连接和全连接队列情况
2、ss -lnt
ss -lan | grep EST | grep 8302 | awk '{print $NF}' | awk -F':' '{print $1}' | sort | uniq -c | sort -gr