CPU飙高问题排查

码海星罗盘
• 阅读 2107

文章目录

1、查询哪个进程占用CPU

2、进程哪个线程占用CPU

3、查询线程的堆栈信息

前言

CPU飙高时,基本就是三板斧就可以找到具体占用CPU的线程信息,这样,你就看到CPU这么高,是什么线程在捣乱了!

1、查询哪个进程占用CPU

可以使用Top 或者top | grep 用户名

比如这里我们可以使用 top | grep deploy 查询当前用户deploy下面有哪些进程比较占用CPU,如下图,可以发现进程28284比较占用CPU

CPU飙高问题排查

2、进程哪个线程占用CPU

接着我们查看上述进程内是哪些线程在捣乱,使用命令top -H -p  PID

在这里我们使用top -H -p  28284,结果如下图,我们发现是有几个线程相对占用比较高,比如28389、28390等(这里我们只是展示效果,不要在乎是否真的占用比较大)

CPU飙高问题排查

3、查询线程的堆栈信息

在这里我们要分两步

1、将tid转换为16进制的数字:printf “%xn” tid

2、 查询线程信息:jstack 28284 | grep 6ee5 -A 10

执行结果如下图,我们可以看到具体是我们的应用里的哪个线程占用CPU较高,比如这里就是一个叫SimplePauseDetectorThread_1的线程,下面就是根据具体线程业务分析了

CPU飙高问题排查

点赞
收藏
评论区
推荐文章
马丁路德 马丁路德
4年前
浅谈 vue 前端同构框架 nuxt 及其性能优化
前言使用nuxt.js做项目也接近快一年了,从立项到内测、公测、再到正式上线,还有后面的不断维护,也陆陆续续的踩了很多坑,其中最大的问题就是node的渲染性能问题了。模板转换是cpu密集型的操作,node又是单线程的,并发一高,cpu就会飙到100%。为了提
Wesley13 Wesley13
3年前
SCHED_FIFO与SCHED_OTHER调度机制
疑问两个线程分别有不同的调度策略,一个SCHED\_FIFO,一个SCHED\_OTHER,按照之前的理解,SCHED\_FIFO实时线程一定会占用CPU一直运行,导致SCHED\_OTHER的普通线程得不到CPU,事实是这样么?验证写了一小段代码,一个是验证SCHED\_FIFO的高优先级线程会不会抢占低优先级的线程,在不主动放弃的
Wesley13 Wesley13
3年前
java 常用命令
查看堆使用情况jmapheappid查看占用内存高的对象jmaphisto:livepid|headn100查看占用内存高的对象,dump成文件,线下分析jmapdump:live,formatb,filexxx.xxxpid查看进程的线程情况psppidLopcpu,pmem,p
Bill78 Bill78
4年前
python中的各种锁
一、全局解释器锁(GIL)  1、什么是全局解释器锁      在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使    用权消失后才能使用全局解释器(cpu),即时多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局    解释器锁(GIL)。 
Stella981 Stella981
3年前
JVM调优之jstack找出最耗cpu的线程并定位代码
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。第一步先找出Java进程ID,服务器上的Java应用名称为mrfcenter:root@u
Stella981 Stella981
3年前
JVM快速调优命令汇总
CPU监控:进程和线程观察哪个进程CPU和内存占比高top观察进程中的线程,哪个线程CPU和内存占比高topHppidtop16837topHp16837定位具体java进程定位具体java进程jps
Wesley13 Wesley13
3年前
5.1 监控Linux系统状态 至 监控Linux系统状态5.9
5.15.4监控Linux系统状态14查看系统负载:w/uptime最后面三个数字表示1分钟,5分钟,15分钟平均有多少个进程占用CPU占用CPU的进程可以是Running,也可以是Waiting某一时刻1颗CPU只能有一个进程在使用其资源top命令:top回车就可以进入到top
Wesley13 Wesley13
3年前
1、简单排查java应用CPU飙高的线程问题
1\.获取要查看的进程的IDpsaux|grepxxx2\.查看此进程下的线程信息topHp<pidtopp<pid   按shifthtopHp<pid    3\.查看栈信息jstac
Stella981 Stella981
3年前
Linux下CPU占用率高分析方法
<divclass"htmledit\_views"id"content\_views"<p一、可能有线程一直占用CPU资源</p<p1.先通过ps查看进程状态,找出进程的PID(8209)。</p<p2.jstackl8209&gt;/usr/local/work/tomcat/8209.stack导出PID
Stella981 Stella981
3年前
JVM 调优之 jstack 找出最耗cpu的线程
top命令观察到问题:内存不断增长CPU占用率居高不下!(https://oscimg.oschina.net/oscnet/upe838b490d1a75f988a3076794f329c9947d.png)topHp观察进程中的线程,哪个线程CPU和内存占比高topHp10424
Wesley13 Wesley13
3年前
Java并发编程基础
什么情况下应该使用多线程:线程出现的目的是什么?解决进程中多任务的实时性问题?其实简单来说,也就是解决“阻塞”的问题,阻塞的意思就是程序运行到某个函数或过程后等待某些事件发生而暂时停止CPU占用的情况,也就是说会使得CPU闲置。还有一些场景就是比如对于一个函数中的运算逻辑的性能问题,我们可以通过多线程的技术,使得一个函数中的多