1、如何使用jstack分析线程状态
https://www.cnblogs.com/silentdoer/p/11736498.html
https://www.cnblogs.com/heyanan/p/9261695.html
jstack命令 要装jdk(命令在bin目录里面) 参考: https://www.cnblogs.com/kaibindirver/p/14647110.html
泽嵩老师教的:
排查CPU占用过高的线程步骤:
(1)先使用 【PS aux |grep +关键字】 查找服务进程ID 这里我用 ps -eaf | grep java 才行
(2)在使用 【top –Hp +进程ID】取得占用cpu高的线程pid
(3) 使用命令【 printf "%x
"+ pid】将10进制的进程换成16进制Tid
(4)打印线程信息【jstack(1中的ID)| grep 16进制ID +【-C】10(前后10行)】
例子:ps -ef|grep java
top -Hp 3689
printf "%x
" 3763
jstack 3689 | grep eb3 -C 20
上面这个只能看java的项目
要看其他语言的项目用 (还没研究)
安装perf
sudo apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r` // ubuntu
sudo yum install perf // centos
进程中哪个函数导致了 CPU 使用率升高,用 perf 分析
# -g 开启调用关系分析,-p 指定的进程号 21515
# perf top -g -p 21515