问题:有时候java服务器还在运行,但就是没响应请求了/很慢
思路:这种情况极大概率是死循环,要上服务器排查一下,看是哪个进程cpu有问题,然后具体看进程下哪个线程的cpu异常,打印该线程十六进制地址,把这地址作为过滤关键字,在Java堆栈信息找到该线程的栈信息,就能确定是在执行程序的哪段代码有问题,从而知晓原因。
步骤:
1、确定哪个进程PID的cpu异常高
top或htop,找到cpu异常高的进程PID
2、确定该进程下的哪个线程PID的cpu异常高
top -Hp 进程PID,找到cpu异常高的线程PID
3、打印该线程十六进制地址
printf "%xn" 线程PID,获取到十六进制地址
4、确定是在执行程序的哪段代码
jstack 进程PID | grep -A30 十六进制地址



