生产环境CPU占用过高分析

1. 分析思路

结合Linux和JDK命令一块分析

1)先用top命令查找cpu占用最高的进程;

2)ps -ef 或者jps进一步定位进程详情(具体什么程序);

3)定位到具体的线程或者代码:

ps -mp 进程 -o THREAD,tid,time
 
-m:显示所有的线程
-p:pid进程使用cpu的时间
-o:该参数后是用户自定义格式

 

4)将需要的线程ID转换为16进制格式(英文小写格式);

printf "%x\n" 有问题的线程ID

5)jstack 进程ID | grep tid(16进制线程ID小写英文) -A60

jstack 5101 | grep 13ee -A60 //追踪进程5101的线程13ee的详情,并打印前60行

 

2. JDK自带的JVM监控和性能分析工具

1)性能监控工具

(1) jps(虚拟机进程状况工具)

(2) jinfo(Java配置信息工具)

(3) jmap(内存映像工具)

A. 作用:

生成Java应用程序的堆快照和对象的统计信息;

B. 官网
C. 相关case

映射堆快照:jmap -heap 进程ID

抓取堆内存:

  • 生成hprof文件并下载到本地
  • MAT分析插件工具

(4) jstat(统计信息监控工具)

A. 作用:

查看堆内存各部分的使用量,以及加载类的

B. 官网
C. 相关case
  • 类加载统计
  • 编译统计
  • 垃圾回收统计

 

 
posted @ 2020-03-26 22:23  HappyDeveloper  阅读(534)  评论(0编辑  收藏  举报