CPU飙高系统反应慢怎么排查?
当 Java 系统出现 CPU 飙高、系统反应慢的问题时,可以按照以下步骤进行排查:
1. 确认 CPU 高负载情况
- 使用系统监控工具:在 Linux 系统中,可使用
top
命令查看系统中各个进程的 CPU 占用情况。按下1
键还能查看每个 CPU 核心的使用情况。若发现 Java 进程的 CPU 占用率持续很高,就需要对该 Java 进程进行深入排查。 - 使用
ps
命令:通过ps -ef | grep java
命令可以获取 Java 进程的 PID(进程 ID),这在后续的排查中会经常用到。
2. 定位 Java 进程中的高 CPU 线程
- 使用
top -Hp
命令:在top
命令界面中,按下H
键可以显示线程信息,然后使用top -Hp <Java 进程 PID>
命令,查看该 Java 进程中各个线程的 CPU 占用情况,找出占用 CPU 较高的线程 ID。 - 将线程 ID 转换为 16 进制:因为 Java 线程栈信息中的线程 ID 是 16 进制的,所以需要将找到的高 CPU 线程 ID 转换为 16 进制。可以使用
printf "%x\n" <线程 ID>
命令进行转换。