技术排查问题常用命令

查看网络连接数:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看的堆对象
jmap –histo:live $pid | sort-n -r -k2 | head-n 50
按照 CPU/ 内存的使用情况列出前 10 的进程
ps axo %mem,pid,euser,cmd | sort -nr | head -10
ps -aeo pcpu,user,pid,cmd | sort -nr | head -10
显示系统整体的 CPU 利用率和闲置率
grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print "idle \t used\n" $5*100/total "% " $2*100/total "%"}'
按线程状态统计线程数
jstack $pid | grep java.lang.Thread.State:|sort|uniq -c | awk '{sum+=$1; split($0,a,":");gsub(/^[ \t]+|[ \t]+$/, "", a[2]);printf "%s: %s\n", a[2], $1}; END {printf "TOTAL: %s",sum}';
按照 Swap 分区的使用情况列出前 10 的进程
for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -r | head -10