排查cpu问题
1.使用top命令查看进程
top
2.使用top命令查看线程
top -H -p pid,这里-H表示详细展示线程信息
3.打印线程id
printf '%x\n' pid
4.使用jstack命令查看线程栈
jstack pid | grep tid -A50
有了线程堆栈信息,就可以方便排查耗cpu高的代码段了。
另外,还可以查看总的线程状态
jstack pid | grep 'java.lang.Thread.State' | sort -nr | uniq -c
解释:sort命令-n表示按数值排序,-r表示逆序。uniq -c表示分组计数
排查磁盘
df -h,-h表示人类可读的方式,会显示为10k,5m这种。
排查内存
free -h,这里-h也表示人类可读方式
不同linux版本free命令的输出不一样。
这里的输出是操作系统视角,其中total指的是总内存,total = used + free +buff/cache。free是未被使用的内存,但是buff和cache也是可以用的,所以真正可用的内存是free + buff + cache = 14g。