Java线上服务CPU过载问题快速定位

*  本文介绍一次解决线上服务*Java进程CPU过载问题的经过,提供了如果定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码**导致CPU过载,希望能提供后续遇到类似情况的读者一点思路。

#线上环境发现的问题
*  *测试人员在测试环境发现,机器卡顿,CPU占用率相当高。

基本解决方案

*  基于工具先定位具体*Java线程,然后定位Java线程运行的代码块**。

解决过程

*  *线上环境使用操作系统是linux,机器需要先设置好JAVA_HOME环境变量。

1、定位Java线程所属的进程

命令:top -c
得到显示进程运行信息列表
定位得到CPU占用过高的JAVA进程的PID为11721
定位进程PID

2、定位最耗CPU的线程

命令:top -Hp 11721
11721是进程PID,得到进程的线程运行信息列表
定位得到最耗CPU的线程PID有3个,分别是12687,12678,12555
定位最耗CPU的线程

3、把线程PID转为16进制

命令:printf “%x\n” 12687
12687是线程id
得到CPU占用最高的3个16进制的线程ID:0x318f、0x3186、0x310b

计算线程ID十六进制

4、查看线程运行的堆栈信息

命令:jstack 11721 | grep ‘0x318f’ -C9 –color
11721是进程PID,0x318f是线程的16进制的ID
定位得到3个运行堆栈信息,就可以定位问题代码:

0x318f.png


0x310b


 上一篇
《阿里巴巴Java开发手册》学习笔记 《阿里巴巴Java开发手册》学习笔记
2017年,阿里官方推出一套Java编程规范:《阿里巴巴Java开发手册(终极版)》,这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。推出之后,在CSDN,InfoQ,知乎等网
2019-10-13
下一篇 
自研文章爬取系统方案设计 自研文章爬取系统方案设计
1 系统设计分析1.1 需求介绍目前已有社区内容系统的文章数据较少,文章质量普遍较低,为了丰富文章内容,增加用户粘性,需要想办法从其他地方爬取文章数据,丰富社区内容系统的文章。为此,需要设计一个文章内容爬取系统,负责爬取、清洗、保存文章。
2019-10-13
  目录