排查cpu问题

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

【Linux】问题排查_shell

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

【Linux】问题排查_shell_02

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

【Linux】问题排查_top命令_03

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

【Linux】问题排查_java_04

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

另外,还可以查看总的线程状态

jstack pid | grep 'java.lang.Thread.State' | sort -nr | uniq -c

解释:sort命令-n表示按数值排序,-r表示逆序。uniq -c表示分组计数

【Linux】问题排查_shell_05

排查磁盘

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

【Linux】问题排查_代码段_06

排查内存

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

【Linux】问题排查_shell_07

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

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