在linux环境下部署的应用,有时候出于各种原因,出现cpu占用100%的情况。这时候,就需要快速分析定位cpu占用的原因。

通常,通过linux系统的top命令,可以看出具体哪个进程占用了过多的cpu资源。但如果发现是java进程,那么就需要进一步分析是java进程中的具体哪个线程出现了问题。

1、确定Java应用进程编号

使用 jpsps -ef|grep java 命令确定想要分析的应用的进程编号

jps

2、查看Java应用中线程CPU占比

使用top -p 101973 -H 命令查看指定进程下的线程cpu占用比例,分析是具体哪个线程占用率过高,其中 101973 就是通过第一步确定下来的进程编号

top

3、查看线程信息

从中选择占比较高的线程的编号(PID),并将该PID转换为16进制。通过jstack 101973 |grep -A 10 0x5bd8

具体线程信息

通过该命令可以分析出线程的具体信息,再通过相应的解决方法来解决cpu占用过高的问题。

附:巧转进制

PID的进制转换可以使用程序员计算器,这里也提供另外一个的方法:通过chrome浏览器的JavaScript调试控制台进行转换。

在chrome浏览器中按F12打开开发者工具,切换至Console,定义一个变量a,再通过a的字符串转换函数转换至16进制。

这里写图片描述

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐