jstack排查cpu使用率过高

步骤:

1.top命令找出最高占用的进程(command为java)

2.查看高负载进程下的高负载线程:top -Hp 【PID】 (或 ps -mp PID -o THREAD,tid,time)

3.找出最高占用的线程并记录thread_id,把线程号 进行换算成16进制编号:printf ‘0x%x’ thread_id

4.(可选)执行查看高负载的线程名称:jstack 16143【进程】 | grep 3fb6【线程】

5.导出进程的堆栈日志,找到3fb6 这个线程号:jstack 16143 >/home/16143.log

实例操作:

背景:监控系统突然告警,提示服务器cpu负载过高。

一、方法a(最传统方法):定位出问题的线程

1、执行:top

得到占用cpu最高的进程是:19064

2、top -Hp 19064
查看高负载进程下的高负载线程

得到占用cpu最高的线程是:19209

把线程号 19209 进行换算成16进制编号:0x4b09

3、jstack 19064 | grep 4B09 -A 30
找到线程堆栈。-A 30表示打印30行

4、jstack 19209 >/data/log/19209.log

导出进程的堆栈日志,找到0x4b09 这个线程号

附加:
方法 b: show-busy-java-threads

这个脚本来自于github上一个开源项目,项目提供了很多有用的脚本,show-busy-java-threads就是其中的一个。使用这个脚本,可以直接简化方法A中的繁琐步骤。如下,

# wget --no-check-certificate https://raw.github.com/oldratlee/useful-scripts/release-2.x/bin/show-busy-java-threads
# chmod +x show-busy-java-threads
# ./show-busy-java-threads

show-busy-java-threads
#从所有运行的Java进程中找出最消耗CPU的线程(缺省5个),打印出其线程栈
#缺省会自动从所有的Java进程中找出最消耗CPU的线程,这样用更方便
#当然你可以手动指定要分析的Java进程Id,以保证只会显示你关心的那个Java进程的信息
show-busy-java-threads -p <指定的Java进程Id>

show-busy-java-threads -c <要显示的线程栈数>

方法 c: arthas thread

阿里开源的arthas现在已经几乎包揽了我们线上排查问题的工作,提供了一个很完整的工具集。在这个场景中,也只需要一个thread -n命令即可。

# curl -O https://arthas.gitee.io/arthas-boot.jar # 下载
# java -jar arthas-boot.jar

要注意的是,arthas的cpu占比,和前面两种cpu占比统计方式不同。前面两种针对的是Java进程启动开始到现在的cpu占比情况,arthas这种是一段采样间隔内,当前JVM里各个线程所占用的cpu时间占总cpu时间的百分比。

好了,这就是jstack排查cpu使用率过高的办法了,如有问题可与博主一起交流讨论!

jstack排查cpu使用率过高相关推荐

  1. linux下java多线程_Linux系统下Java问题排查——cpu使用率过高或多线程锁问题

    原标题:Linux系统下Java问题排查--cpu使用率过高或多线程锁问题 一个系统.特别是多线程并发的后台系统,在某些特定场景下,可能触发系统中的bug:导致cpu一直居高不下.进程hang了或处理 ...

  2. java cpu过高排查_CPU使用率过高,访问页面的速度越来越慢?今天我教你解决

    tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题. 一.现象描述 在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是 ...

  3. linux服务器 cpu使用率过高,服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

  4. linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高

    tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是由于部署的web程序的问题. 一.征象形貌 在一次线上环境,前台接见页面的速率越来越慢,从浏览器F12中看到发出的请求都是 ...

  5. CPU使用率过高问题排查及Linux之top命令用法详解

    文章目录 问题 解决方案 top命令用法 top各输出参数含义 一.top前5行统计信息 二.进程信息 Top 1的用法 %CPU和us%的区别 问题 公司连续2天服务器告警CPU使用率过高问题,查看 ...

  6. CPU使用率过高如何排查问题

    CPU使用率过高如何排查问题 1.输入top指令,找到比较高的CPU使用率所对应的PID编号 1.输入ps H -eo pid,tid,%cpu | grep 进程PID 查看进程下面哪些线程TID使 ...

  7. linux 内核空间占用cpu百分比过高,线上linux系统故障排查之一:CPU使用率过高

    摘自: 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识. 一.通过top命令定位占用cpu高的进程 执行top ...

  8. window服务器cpu过高的排查_服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

  9. Java应用CPU使用率过高排查

    1.使用top命令查看使用CPU过高的进程 top top - 14:16:06 up 27 min, 3 users, load average: 0.00, 0.01, 0.02 Tasks: 8 ...

最新文章

  1. oracle 查询reference,ORACLE高级查询之MODEL PART3
  2. 电脑图片不显示缩略图怎么办
  3. 基于卷积神经网络的人脸认证(判断两个人脸是否是一个人)
  4. 北极约200万个甲烷点被发现,人类的反思该提上日程了,因为只有一个地球
  5. JavaScript基础03【算数运算符、一元运算符、自增and自减】
  6. wxWidgets:wxURI类用法
  7. 最新卡通渲染效果图(附带一张次世代帅哥)
  8. linux启动后分区数据变化,求助!我删除了Linux启动分区
  9. Angular - angular2升级到angular8
  10. WPF指南之XAML概述
  11. scrapy Crawl_spider
  12. JavaScript的历史由来及简介
  13. 完了!Oracle 被虐!MySQL 登顶 Top1!原来这么多人都在用
  14. network 关于PV,网站访问量和服务器带宽的选择
  15. java hsqldb_Java HsqlDB的初步使用和技巧总结
  16. css定义文字加粗,css文字加粗font-weight
  17. SpringBoot 整合 Elasticsearch 实现海量级数据搜索
  18. Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))
  19. Salesforce诊断网络问题以排除性能下降
  20. vb.net 教程 12-4 msHtml 1

热门文章

  1. Java导入Excel工具类使用教程
  2. k8s调度之亲和/反亲和
  3. android读取带公章的pdf文件,APP中如何显示带电子签名的PDF文件
  4. Python进阶【第一篇】socket
  5. 【问题解决】java.lang.IllegalStateException异常是什么问题?解决办法
  6. 【XSY3657】因数分解(容斥,DP)
  7. 远程教育两周,家长崩溃简史
  8. Ireport 导出pdf 特殊字体设置
  9. 小龙虾炒菜机器人_开挖掘机炒小龙虾?机器人餐厅?吃饭竟也能如此炫酷!
  10. 内网穿透工具-venom