show-busy-java-threads查找CPU占用高
背景:需要查找线上CPU占用过高的Java线程在做什么。
可以使用top命令找出占CPU高的进程
#top 然后按shift+C 按CPU占比排序
然后把进程中占比高的线程id找出来,这个是常见的套路,但是这样做比较繁琐。
可以使用show-busy-java-threads工具包快速定位,确实好用。
1.下载安装
下载
#wget https://github.com/oldratlee/useful-scripts/archive/release.zip
解压
#unzip useful-scripts-release.zip
这是介绍:useful-scripts/java.md at master · oldratlee/useful-scripts · GitHub
show-busy-java-threads
# 从所有运行的Java进程中找出最消耗CPU的线程(缺省5个),打印出其线程栈# 缺省会自动从所有的Java进程中找出最消耗CPU的线程,这样用更方便
# 当然你可以手动指定要分析的Java进程Id,以保证只会显示你关心的那个Java进程的信息
show-busy-java-threads -p <指定的Java进程Id>show-busy-java-threads -c <要显示的线程栈数>show-busy-java-threads <重复执行的间隔秒数> [<重复执行的次数>]
# 多次执行;这2个参数的使用方式类似vmstat命令show-busy-java-threads -a <运行输出的记录到的文件>
# 记录到文件以方便回溯查看show-busy-java-threads -S <存储jstack输出文件的目录>
# 指定jstack输出文件的存储目录,方便记录以后续分析##############################
# 注意:
##############################
# 如果Java进程的用户 与 执行脚本的当前用户 不同,则jstack不了这个Java进程
# 为了能切换到Java进程的用户,需要加sudo来执行,即可以解决:
sudo show-busy-java-threadsshow-busy-java-threads -s <指定jstack命令的全路径>
# 对于sudo方式的运行,JAVA_HOME环境变量不能传递给root,
# 而root用户往往没有配置JAVA_HOME且不方便配置,
# 显式指定jstack命令的路径就反而显得更方便了# -m选项:执行jstack命令时加上-m选项,显示上Native的栈帧,一般应用排查不需要使用
show-busy-java-threads -m
# -F选项:执行jstack命令时加上 -F 选项(如果直接jstack无响应时,用于强制jstack),一般情况不需要使用
show-busy-java-threads -F
# -l选项:执行jstack命令时加上 -l 选项,显示上更多相关锁的信息,一般情况不需要使用
# 注意:和 -m -F 选项一起使用时,可能会大大增加jstack操作的耗时
show-busy-java-threads -l# 帮助信息
$ show-busy-java-threads -h
2.使用
#./show-busy-java-threads
参考:JVM那点事—show-busy-java-threads排查CPU性能问题 - 简书
相关文章:

了解机器学习的八大专业术语
转自:https://www.sohu.com/a/217453268_178466 1 自然语言处理 自然语言处理对于许多机器学习方法来说是一个常用的概念,它使得计算机理解并使用人所读或所写的语言来执行操作成为了可能。 自然语言处理最重要的最有用的实例: ① 文本分类…

34.TokenInterceptor防止表单重复提交
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 由于某些原因,用户在进行类似表单提交的操作后,以为表单未被提交,会进行多次的重复提交。为了避免用户多次提交给服务器带来负荷。我们会对表单提交这样的操作进…

使用arthas采集火焰图
火焰图是用图形化的方式来展现profiler工具采集的性能数据,对数据进行统计和分析,方便找出性能热点。 现在我们使用arthas采集JVM的火焰图。 1.首先你需要安装arthas 说是安装其实就是下载解压,arthas是不需要安装的。 下载 — Arthas 3.5…

sudo配置文件详解及实战
2019独角兽企业重金招聘Python工程师标准>>> 安装NGINX之后每次都需要切换ROOT用户做配置文件修改和启动,为了加强安全,ROOT用户一般是不允许直接提供给应用开发人员或者运维人员的,所以需要提供一种方法可以一般用户执行ROOT用户…

Centos中文输入法安装以及切换
鼓捣鼓捣(我是一只菜鸟),终于在我的Centos上面装上我的大中华输入法了,哈哈哈哈下面就简单描述下安装过程吧!!!centos6.5用yum安装中文输入法打开终端,进入root用户(命令…

【MATLAB】矩阵信息的获取
1、矩阵结构 矩阵的结构是指矩阵子元素的排列方式。 函数名称函数功能isempty(A)检测矩阵是否为空isscalar(A)检测矩阵是否是单元素的标量矩阵isvector(A)检测矩阵是否是只具有一行或一列元素的一维向量issparse(A)检测数组是否是系数矩阵 返回1表示该矩阵是某一特定类型的矩…
Android Gradle Plugin 源码解析(上)
一、源码依赖 本文基于: android gradle plugin版本: com.android.tools.build:gradle:2.3.0 gradle 版本:4.1 Gradle源码总共30个G,为简单起见,方便大家看源码,此处通过gradle依赖的形式来查看源码,依赖源…

Guice系列之用户指南(七)
原文地址:https://code.google.com/p/google-guice/wiki/ToConstructorBindings Constructor Bindings(构造器绑定):在父类型上绑定子类实现的构造函数。 贴代码: 12345678910111213141516171819202122232425262728293…

Linux系统火焰图
CentOS7.8 安装perf #yum install perf 执行perf 执行perf record 命令,记录该PID的行为 #perf record -a -g -p 14851 -- sleep 30 --30秒后退出 需要注意后面生成svg图片的所有命令要和当前perf在同一目录,不然会报错。 #perf report 安装git …

深圳杯---垃圾焚烧厂的经济补偿问题
垃圾围城是世界性难题,在今天的中国显得尤为突出。2012年全国城市生活垃圾清运量达到1.71亿吨,比2010年增长了1300万吨。数据显示,目前全国三分之二以上的城市面临垃圾围城问题,垃圾堆放累计侵占土地75万亩。因此,垃圾…

make -j8以及linux下查看cpu的核数
# 总核数 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu …

IDEA2021.3.2拉取maven报错maven-default-http-blocker解决方法
因为IDEA2021.3.2 的Maven是3.8.1后,mvn编译的时候总是提示拉不到依赖,报错如下: Could not validate integrity of download from http://0.0.0.0/... 因为使用HTTP协议下载依赖,可能会导致中间人攻击。 所以Maven 3.8.1就禁止…

2013高教社杯---B碎纸片的拼接复原
破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。随着计算机技术的发展&a…

oracle--with as
with as把一段查询结果放在临时表,后面的查询中可多次使用 语法: with 别名 as(select * from table) 或 with 别名1 as(select * from table1), ............. 别名n as(select * from tablen) 示例: with 别名 as(select * from table wher…

Flask上下文管理源码分析
略略略...转载于:https://www.cnblogs.com/dzf123456/p/9446220.html

IDEA函数调用关系图插件
Call Graph是一款IDEA插件,用于可视化基于IntelliJ平台的IDE的函数调用图。 这个插件的目标是让代码更容易理解,有助于读懂和调试代码。 安装插件 安装后,通过View - Tool Windows - Call Graph ,激活窗口 激活后,需要…

[Notice]博客地址转移 vitostack.com
个人博客地址转移至vitostack.com 这里可能不会经常更新。 欢迎访问新地址。 转载于:https://www.cnblogs.com/Vito2008/p/5595430.html

【MATLAB】find 函数 总结
【MATLAB版本为2014a】 MATLAB中函数find函数的作用是进行矩阵元素的查找,它通常与关系函数和逻辑运算相结合。 indfind(X,...):该函数查找矩阵中的非零元素,函数返回这些元素的双下标[row,col]find(X,...):该函数查找矩阵X中的…

与HTTP关系密切的协议:IP、TCP、DNS
TCP/IP协议族的协议挺多的,我们精力有限,不可能一个个都了如指掌,那就挑一些与HTTP协议关系了解吧~ 负责传输的IP协议 按层次分,IP协议位于网络层。 IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里࿰…

C#精髓 第四讲 GridView 72般绝技
说明:准备出一个系列,所谓精髓讲C#语言要点。这个系列没有先后顺序,不过尽量做到精。可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注。 C#精髓 第四讲 GridView 72般绝技 作者:清清月儿 主页:ht…
Android layer-list(3)
Android layer-list(3) 在附录文章3、4的基础上,就Android layer-list再写一个较为复杂的应用。 先写布局文件,该布局涉及到LinearLayoutCompat,关于LinearLayoutCompat参看附录文章5。 布局文…
【MATLAB】二维矩阵可视化 MATLAB绘图
基本绘图函数 1、plot(y) 如果y是向量,则采用向量的索引值作为横坐标值,以向量元素的值作为纵坐标值。 如果y是实数矩阵,则相当于对y的每一列进行二维绘图。 如果y是复数组成的向量,则相当于plot(real(y),imag(y))。 2、plot…

phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php)
phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php) 一、总结 一句话总结:把原生php的网站直接放到thinkphp5的public目录下可以解决以stem.aaaa.hk\**方式访问原生网站会被当成thinkphp子模块的问题 最后的解决方法&a…

bzoj3442 学习小组
目前处于迷之TLE状态 -----6.21更新 已AC 3442: 学习小组 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 200 Solved: 87Description 【背景】坑校准备鼓励学生参加学习小组。【描述】共有n个学生,m个学习小组,每个学生有一定的喜好,只愿…
C语言经典著作导读
本人不是卖书的,我也不会给出任何购书链接,只是给C语言学习者推荐一条学习的方向。如果你喜欢看电子书网上很多,如果你喜欢纸质那么就买吧,经典的书值得收藏,是对版权的尊重! 基础篇 1.《写给大家看的C语言…
针对2013年B题碎纸片拼接问题(附件一、附件二)
题目链接:https://blog.csdn.net/CSDN___CSDN/article/details/82051821 http://www.shumo.com/wiki/doku.php?id2013_%E5%B9%B4%E5%85%A8%E5%9B%BD%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E7%AB%9E%E8%B5%9B_cumcm_%E8%AF%95%E9%A2%98…

什么是类型别名?什么是潜在类型?
2019独角兽企业重金招聘Python工程师标准>>> 别名类型 在Go语言里,可以用type声明自定义的各种类型。在这些自定义的类型中,有一种被叫做别名类型。 举个例子: type MyString string这句代码的意思是:MyString是strin…
Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。 《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机…

5个最佳的Android测试框架
2019独角兽企业重金招聘Python工程师标准>>> 谷歌的Android生态系统正在不断地迅速扩张。有证据表明,新的移动OEM正在攻陷世界的每一个角落,不同的屏幕尺寸、ROM /固件、芯片组以及等等等等,层出不穷。于是乎,对于Andr…
【CTF】实验吧 凯撒变异
通过分析可以知道前四个“afZ_”四个的ASCII码值与“flag”的ASCII码值依次相差5,6,7,8。 #include <stdio.h> #include <string.h> int main () {char str[40]"afZ_r9VYfScOeO_UL^RWUc";int i0,j5;while(i<strlen…