【Linux】问题排查

参考:https://fredal.xin/java-error-check

排查cpu问题

1.使用top命令查看进程
top

【Linux】问题排查

2.使用top命令查看线程
top -H -p pid,这里-H表示详细展示线程信息

【Linux】问题排查

3.打印线程id
printf '%x\n' pid

【Linux】问题排查

4.使用jstack命令查看线程栈
jstack pid | grep tid -A50

【Linux】问题排查

有了线程堆栈信息,就可以方便排查耗cpu高的代码段了。

另外,还可以查看总的线程状态
jstack pid | grep 'java.lang.Thread.State' | sort -nr | uniq -c
解释:sort命令-n表示按数值排序,-r表示逆序。uniq -c表示分组计数
【Linux】问题排查

排查磁盘

df -h,-h表示人类可读的方式,会显示为10k,5m这种。

【Linux】问题排查

排查内存

free -h,这里-h也表示人类可读方式

【Linux】问题排查

不同linux版本free命令的输出不一样。

这里的输出是操作系统视角,其中total指的是总内存,total = used + free +buff/cache。free是未被使用的内存,但是buff和cache也是可以用的,所以真正可用的内存是free + buff + cache = 14g。