如何找到CPU飙升的原因
CPU飙升在日常系统运维过程中并不少见,本文将介绍如何快速找出Java应用CPU飙升的原因。在开始之前,我们想想,想要定位Java应用的CPU飙升的原因,我们需要知道哪些信息?以下是我的答案:
- 首先,需要知道哪个进程占用CPU比较高,
- 其次,需要知道占用CPU高的那个进程中的哪些线程占用CPU比较高,
- 然后,需要知道这些线程的stack trace。
找出了CPU占用高的线程号和其stack trace并再结合应用日志基本上就可以找到问题根源。接下来,将介绍相应的工具来找到这些问题的答案。
首先,通过top和pgrep来查看系统中Java进程的CPU占用情况。命令如下:
top -p `pgrep -d , java`
其中pgrep是显示系统中java应用的进程号,top -p是只显示这些进程的信息。记录下CPU占用率最高的那个进程号。
其次,通过top来查看进程中CPU占用最高的那些线程,命令为:
top -Hp 12345
这里,假定12345为占用CPU高的进程号。-H是显示该进程中线程的CPU占用情况。同样,记录下CPU占用率高的那些线程号。
然后,通过jstack导出Java应用中线程的stack trace,命令如下:
jstack 12345
这里是最关键的一步,需要把第2步中的线程号和jstack输出结果中的线程号关联起来。因为top中显示的线程号是10进制,jstack的输出结果中的线程号是16进制,所以只需要把top中看到线程号转换成16进制,然后到jstack的输出结果中即可找到对应线程的stacktrace了。
小结一下,我们通过top和jstack来找到CPU占用高的线程的stack trace,其中最关键的是上述第3步中如何将top中观测到的线程号关联到jstack的输出的stack trace。
---------------------
原文:https://blog.csdn.net/jewes/article/details/65935733
如何找到CPU飙升的原因相关推荐
- 线上频繁发生Full GC 如何调优?如何快速定位OOM、cpu飙升、线程死锁等问题
文章目录 1. jvm调优命令.工具介绍 ①:jps ②:jmap 查看应用中各实例生成情况 快速定位内存突然飙升导致的OOM异常 查看堆内存使用情况 ③:Jstack 检测线程死锁 快速定位导致cp ...
- 运维告诉我CPU飙升300%,为什么我的程序上线就奔溃了
线上服务CPU飙升的一次经历 前言 功能开发完成仅仅是项目周期中的第一步,一个完美的项目是在运行期体现的 今天我们就来看看笔者之前遇到的一个问题CPU飙升的问题. 代码层面从功能上看没有任何问题但是投 ...
- jvm优化—监控工具:诊断内存泄露、cpu飙升、线程死锁、响应变慢
目录 一.jvm常见监控工具&指令 JVM常见参数 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 1. jps:jvm进程状况工具 2.jstat: jvm ...
- cpu飙升 死循环_记一次CPU飙升BUG
一.前言 上线后,CPU飙升到100%,怎么办?马上重启?大错特错,马上重启只会让这个雷石沉大海,治标不不治本,等待你的下次的历史重演! 二.现象 监控告警,某机器的CPU飙升到100% 三.分析 第 ...
- 使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因
使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因 原文:使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因 公司的产品一直 ...
- 记一次CPU飙升的问题分析解决思路(转)
一.前言 上线后,CPU飙升到100%,怎么办?马上重启?大错特错,马上重启只会让这个雷石沉大海,治标不不治本,等待你的下次的历史重演! 二.现象 监控告警,某机器的CPU飙升到100% 三.分析 第 ...
- 简单的cpu飙升排查方法
1先来一段飙升代码 public class FindJavaThreadInTaskManager {public static void main(String[] args) {Thread t ...
- 下载丨8月数据库技术通讯:不合理业务设计导致CPU飙升
为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时,我们也希望能够将 ...
- Java程序CPU飙升排查,找出死循环代码
windows环境下cpu飙升问题 线上某台runtime机器(windows Server)cpu报警,这种情况初步就是代码里面死循环了,先把机器下线了保证不再有新的任务分配进来,然而cpu使用依然 ...
- 线上服务导致cpu飙升问题排查
一.故障说明 昨晚突然收到线上服务器cpu报警,登录监控平台看了下发现cpu瞬间飙升到60%.第一反应就是使用top命令去查看,发现是一个java进程.于是立刻使用jps -l命令定位到该java进程 ...
最新文章
- 耐能团队论文登上《自然·电子学》:集成忆阻器与CMOS以实现更好的AI
- Linux pg数据库导出数据,linux下 postgres实现导出和导入
- react native windows 搭建(完整版)
- Campus Address
- react 使用 leaflet 百度地图_【React】react项目中应用百度地图添加起始点绘制路线...
- 企业实战04:Oracle数据库_管理表
- 【华为云技术分享】用人工智能技术推动西安民俗文化,斗鱼超管团队有一套
- LintCode 28. 搜索二维矩阵
- 一步一步写算法(之二叉树深度遍历)
- crontab下执行设置壁纸出错问题
- main run方法没用_多线程:解决Runnable接口无start()方法的问题
- windows远程连接linux系统(图文)
- 企业园区全面安防面临的问题及解决之道
- Affymetrix基因芯片小总结
- OLS和GWR模型部分参数解释
- 一个简单的划词翻译工具
- Word如何快速绘制你需要的作文稿纸
- Android Studio查看MD5
- 2007电脑报专用版SN(备忘之用)
- Xposed FrameWork v89 安装