一、发现问题的系统检查
一个管理平台门户网页进行统计页面提示请求超时,随进服务器操作系统 top 命令进行检查load average的负载状况
二、定位故障
根据这种故障的一般处理思路,先找出问题进程内CPU占用率高的线程,再通过线程信息找出该线程当时在运行的问题代码端
根据思路查看高占用的进程中占用高的线程
追踪发现某个进程中的的某个线程占用较高
]# top -Hbp PID | awk '/进程名/ && $9>10'
将PID对应占用高的线程ID转为16进制的线程ID
]# printf '%x\n' 线程ID
输出16进制的线程ID
通过 jvm的 jstack查看进程信息,发现调用的是哪个服务的问题
]# jstack 进程ID | grep '16进制的线程ID' -A 30
既然查出来了就检查该应用服务
思路是先打印所有在跑的服务线程,检查后发现跟进情况找到问题所在
- 举例:
]# top -Hbp 7163 | awk '/java/ && $9>50' #7163占用高的进程Id
]# printf '%x\n' 16298 #16298 为7163进程中线程占用较高的
输出 3faa
]# jstack 7163 | grep '3faa