CPU负载120%
概述
- 背景:生产环境服务响应缓慢,出现RPC接口超时
- 排查:
- 服务双机部署,登录两台日志机器,登录两台部署机器
- 查看部署机器服务负载,
- top 查看,同一台机器上部署三个服务
- 其中A服务,CPU 120%
- 查看刚出现 CPU 负载过高的时间,运维提供监控日志显示上午,查看日志,这期间发生的疑似操作
- 定位问题,近期优化的一个批量初始化数据到缓存中的功能被触发了多次,且该功能为了快速响应,建立线程池,核心线程数10,最大线程数20,用户进行了多次点击,每一次的数据请求量都很大,上一次操作没有完成,下一次的请求即开始了
堆栈信息1
- 查看负载高的进程
- 进入部署服务器
- top , 按 P ,记录CPU负载高的进程编号
- 查看负载高的进程
- top -Ph pid 进程编号,按P ,记录CPU负载高的线程编号
- 线程编号转为十六进制,通过windows提供的科学计算器
- 查看堆栈信息
- jstack pid | grep “0xtid”
<