1,根据cpu查找线上程序出现的问题
展现问题
编写程序
@RestController
@RequestMapping("jvmone")
public class JvmOne {
@RequestMapping("t1")
public void t1() {
while (true) {
}
}
}
启动程序
打包启动程序
java -jar xxx.jar
展现问题
访问程序
curl http://localhost:20000/jvmone/t1
查看问题
top
查找原因
1、找到出现问题的进程
id
top
image.png
2、打印出该进程的dump数据(操作的是线程)
jstack 7195 >jstack7195.txt
3、找到出现问题的线程
image.png
4、进制转换
由于在jstack7195 .txt中是以16进制显示线程
,所以将该线程
号转换为16进制
printf "%x \n" 7217
结果
1c31
6、进入打印出的文件
vim jstack7195.txt
定位1c31的位置
/1c31
image.png
jstack打印的是线程的dump数据
dump记录cpu和内存信息
网友评论