内容目录
title: Java的CPU性能排查
date: 2022-10-29 08:14:19.042
updated: 2022-10-29 08:14:19.042
url: https://ritoom.me/archives/java的cpu性能排查
categories:
tags:
Java性能优化-CPU
近期观察到服务器运行的Java程序CPU占用过高,往往是程序运行时使用了大量资源并且不会释放,最终引发了阿里云报警。
原因排查
- 使用top命令查找占用CPU资源最多的Java进程PID
- 使用top -H -p [java进程id]命令查找占用最多CPU资源的线程,并记录下pid
- 计算Java线程pid的十六进制值,因为后续用jstack看到的线程快照中,线程id为小写十六进制值
- Linux可使用命令:printf "%xn" [线程_id]
- 使用命令 jstack [java进程pid] | grep [线程id十六进制值] -A 30(-A 30表示向下打印30行)
执行完第4条完成后,就可以定位到具体的业务代码,最后就可以根据代码优化了。
其他方法
Arthas
这是阿里云开源的一款在线性能分析工具,封装了很多jvm方法,通过命令行的方式,可以查看内存占用、CPU占用、堆栈异常等问题
[Arthas – Java 线上问题定位处理的终极利器]
官方文档