jstack排查cpu使用率过高
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使用率过高相关推荐
- linux下java多线程_Linux系统下Java问题排查——cpu使用率过高或多线程锁问题
原标题:Linux系统下Java问题排查--cpu使用率过高或多线程锁问题 一个系统.特别是多线程并发的后台系统,在某些特定场景下,可能触发系统中的bug:导致cpu一直居高不下.进程hang了或处理 ...
- java cpu过高排查_CPU使用率过高,访问页面的速度越来越慢?今天我教你解决
tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题. 一.现象描述 在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是 ...
- linux服务器 cpu使用率过高,服务器CPU使用率过高排查与解决思路
发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...
- linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高
tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是由于部署的web程序的问题. 一.征象形貌 在一次线上环境,前台接见页面的速率越来越慢,从浏览器F12中看到发出的请求都是 ...
- CPU使用率过高问题排查及Linux之top命令用法详解
文章目录 问题 解决方案 top命令用法 top各输出参数含义 一.top前5行统计信息 二.进程信息 Top 1的用法 %CPU和us%的区别 问题 公司连续2天服务器告警CPU使用率过高问题,查看 ...
- CPU使用率过高如何排查问题
CPU使用率过高如何排查问题 1.输入top指令,找到比较高的CPU使用率所对应的PID编号 1.输入ps H -eo pid,tid,%cpu | grep 进程PID 查看进程下面哪些线程TID使 ...
- linux 内核空间占用cpu百分比过高,线上linux系统故障排查之一:CPU使用率过高
摘自: 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识. 一.通过top命令定位占用cpu高的进程 执行top ...
- window服务器cpu过高的排查_服务器CPU使用率过高排查与解决思路
发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...
- 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 ...
最新文章
- oracle 查询reference,ORACLE高级查询之MODEL PART3
- 电脑图片不显示缩略图怎么办
- 基于卷积神经网络的人脸认证(判断两个人脸是否是一个人)
- 北极约200万个甲烷点被发现,人类的反思该提上日程了,因为只有一个地球
- JavaScript基础03【算数运算符、一元运算符、自增and自减】
- wxWidgets:wxURI类用法
- 最新卡通渲染效果图(附带一张次世代帅哥)
- linux启动后分区数据变化,求助!我删除了Linux启动分区
- Angular - angular2升级到angular8
- WPF指南之XAML概述
- scrapy Crawl_spider
- JavaScript的历史由来及简介
- 完了!Oracle 被虐!MySQL 登顶 Top1!原来这么多人都在用
- network 关于PV,网站访问量和服务器带宽的选择
- java hsqldb_Java HsqlDB的初步使用和技巧总结
- css定义文字加粗,css文字加粗font-weight
- SpringBoot 整合 Elasticsearch 实现海量级数据搜索
- Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))
- Salesforce诊断网络问题以排除性能下降
- vb.net 教程 12-4 msHtml 1