定位 CPU 高负载 Java 线程

常用命令

# 按照 CPU 使用率排序输出进程信息
ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu# 监控对应 pid 进程下的所有线程按照 CPU 排序
top -Hp "$pid" -o %CPU # jstack 输出 JVM 堆栈信息
jstack $pid

演示事例

查看高负载 Java 进程获取到对应 pid

$ ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpuPID  PPID %CPU %MEM CMD4432  4288  102  1.2 /usr/bin/qemu-x86_64 /usr/lib/jvm/java-1.8.0/bin/java java -cp mytomcat.jar co4288     0  0.2  0.2 /usr/bin/qemu-x86_64 /bin/bash /bin/bash1     0  0.0  0.1 /usr/bin/qemu-x86_64 /bin/sh /bin/sh /home/user/run.sh29     1  0.0  0.2 /usr/bin/qemu-x86_64 /usr/bin/sudo sudo /usr/sbin/sshd -D34    29  0.0  0.2 /usr/bin/qemu-x86_64 /usr/sbin/sshd /usr/sbin/sshd -D37     1  0.0  0.0 /usr/bin/qemu-x86_64 /usr/bin/tail tail -f /dev/null411     1  0.0  1.2 /usr/bin/qemu-x86_64 /usr/lib/jvm/java-1.8.0/bin/java java -cp mytomcat.jar co1892     0  0.0  0.2 /usr/bin/qemu-x86_64 /bin/bash /bin/bash3671     1  0.0  0.0 [java] <defunct>3759     1  0.0  0.0 [java] <defunct>3839     1  0.0  0.0 [jstack] <defunct>4017     1  0.0  0.0 [java] <defunct>4105     1  0.0  0.0 [java] <defunct>4466  1892  0.0  0.1 ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu

查看 pid 为 4432 进程的线程 CPU 占用情况

$ top -Hp 4432 -o %CPU -n 1top - 09:30:22 up 1 day,  4:05,  0 users,  load average: 1.04, 1.62, 1.85
Threads:  16 total,   1 running,  15 sleeping,   0 stopped,   0 zombie
%Cpu(s): 25.8 us,  0.0 sy,  0.0 ni, 72.7 id,  0.0 wa,  0.0 hi,  1.5 si,  0.0 st
KiB Mem :  8039920 total,  5078924 free,   469100 used,  2491896 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  6990084 avail Mem PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                         4435 user      20   0 4585612  98712  17288 R 99.9  1.2   1:24.68 java                            4432 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.05 java                            4434 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4436 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4437 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4438 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4439 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4440 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4441 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4442 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4443 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4444 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.17 java                            4445 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4446 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.18 java                            4447 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.00 java                            4448 user      20   0 4585612  98712  17288 S  0.0  1.2   0:00.06 java 

可见该进程下 pid 为 4435 的线程 CPU 占用率最高将其换算为 16 进制 4435 = 0x1153

将 4432 堆栈信息导出并检索 4435 (jstack 导出的线程 id 是 16 进制)线程的调用情况

$ jstack 4432 > 4432.log
$ less 4432.log # /0x1153

定位到具体的线程调用情况

"main" #1 prio=5 os_prio=0 tid=0x0000004004009440 nid=0x1153 runnable [0x0000004002f36000]java.lang.Thread.State: RUNNABLEat com.ft.mytomcat.MyTomcat.main(MyTomcat.java:71)

定位到业务代码

利用 arthas

$ java -jar arthas-boot.jar 
[INFO] JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
[INFO] arthas-boot version: 3.7.1
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 4432 com.ft.mytomcat.MyTomcat
1
[INFO] arthas home: /tmp
[INFO] Try to attach process 4432
Picked up JAVA_TOOL_OPTIONS: 
[INFO] Attach process 4432 success.
[INFO] arthas-client connect 127.0.0.1 3658,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.                           /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'                          
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.                          
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |                         
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'                          wiki       https://arthas.aliyun.com/doc                                        
tutorials  https://arthas.aliyun.com/doc/arthas-tutorials.html                  
version    3.7.1                                                                
main_class                                                                      
pid        4432                                                                 
time       2023-12-25 01:45:20                                                  [arthas@4432]$ thread -n 1
"main" Id=1 cpuUsage=99.77% deltaTime=209ms time=11449914ms RUNNABLEat com.ft.mytomcat.MyTomcat.main(MyTomcat.java:71)[arthas@4432]$ stop
Resetting all enhanced classes ...
Affect(class count: 0 , method count: 0) cost in 7 ms, listenerId: 0
Arthas Server is going to shutdown...
[arthas@4432]$ session (bb9f4723-d996-4309-868d-cdea6fa62cb4) is closed because server is going to shutdown.

使用完 arthas 记得 stop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费福利马上截止!深圳的户外小伙伴别错过!COSP2024体育展来了

COSP2024户外博览会 展会时间&#xff1a;2024年3月14-16日 展会地址&#xff1a;深圳福田会展中心 户外运动爱好者不可错过&#xff01; COSP2024户外博览会不仅可以逛展 看各种露营装备、户外器材 还有各种沙龙、峰会活动 就在明年开年&#xff0c;阳春三月天&#xf…

【办公技巧】ppt如何加密只能看不能修改?

大家是否想要给PPT文件设置加密&#xff0c;让ppt文件变为只能查看不能修改的状态&#xff1f;今天给大家分享给PPT文件设置带有密码的只读模式&#xff08;修改权限&#xff09;。 方法如下&#xff1a; PPT文件之后&#xff0c;将PPT文件进行另存为操作&#xff0c;但是在选…

【反射1】——Java基础(韩顺平讲解)

一个需求&#xff0c;引出反射 | 完整的反射使用流程&#xff1a; 在不修改源码的情况下&#xff0c;来控制程序&#xff0c;也符合设计模式中的opc原则(开闭原则&#xff1a;不修改源码&#xff0c;扩容功能) 1、创建配置文件&#xff1a;re.properties classfullpathcom.r…

SATA和M.2接口的异同点

SATA和M.2接口是连接存储设备的两种常见接口&#xff0c;它们在物理尺寸、传输速度、线缆和接头以及适用设备类型等方面有着显著的异同点。 物理尺寸 SATA接口通常用于2.5英寸硬盘、3.5英寸硬盘等传统机械硬盘以及SSD&#xff0c;而M.2接口则是一种较为新型的接口标准&#xff…

线下终端门店调研包含哪些内容

品牌渠道一般分为线上和线下&#xff0c;线上的价格、促销信息、店铺优惠机制等都可以通过登录查看&#xff0c;但是线下门店的数据则需要进店巡查&#xff0c;否则无法得到真实的店铺销售数据&#xff0c;当然也有品牌是靠线下的业务团队报备机制获得这些信息&#xff0c;但是…

前端常用的Vscode插件

前端常用的Vscode插件&#x1f516; 文章目录 前端常用的Vscode插件&#x1f516;1. Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code -- Vscode中文插件2. Code Runner -- 快速运⾏调试代码3. Live Server -- 实时重新加载本地开发服务器4. Image prev…

uni-app之HelloWorld实现

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

JAVA版的鸿鹄云商B2B2C:多商家入驻直播商城系统特性解析 商城免 费搭建

鸿鹄云商 b2b2c产品概述 【b2b2c平台】&#xff0c;以传统电商行业为基石&#xff0c;鸿鹄云商支持“商家入驻平台自营”多运营模式&#xff0c;积极打造“全新市场&#xff0c;全新 模式”企业级b2b2c电商平台&#xff0c;致力干助力各行/互联网创业腾飞并获取更多的收益。从消…

006.HCIA 路由

1、设备管理 用户视图 <xxxx> 系统视图 [xxxx] 接口视图 [xxxx-G] 协议视图 a. 视图切换 用户视图 -> 系统视图 系统视图 -> 接口视图 当前视图 -> 上一层视图 当前视图 -> 用户视图 system-view interface g0/0/0 quit Ctrl Z b. 系统视图命令…

人工智能:预测房价模型的构建与应用

摘要&#xff1a; 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一种模拟人类智能思维的技术。“预测房价”是AI在房地产领域的重要应用之一。本文将介绍如何使用Python构建一个预测房价的人工智能模型&#xff0c;并对其进行说明和应用。 引言 人…

JavaOOP篇----第十六篇

系列文章目录 文章目录 系列文章目录前言一、a=a+b与a+=b有什么区别吗?二、final、finalize()、finally三、JDBC操作的步骤四、在使用jdbc的时候,如何防止出现sql注入的问题。前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…

strlen和sizeof的初步理解

大家好我是Beilef&#xff0c;一个美好的下我接触到编程并且逐渐喜欢。我虽然不是科班出身但是我会更加努力地去学&#xff0c;有啥不对的地方请斧正 文章目录 目录 文章目录 前言 想必大家对sizeof肯定很了解&#xff0c;那对strlen又了解多少。其实这个问题应该让不少人困扰。…

openmediavault基本操作

omv基本操作 使用hostname访问共享文件夹设置1.挂载磁盘2.提交更改3.新建用户4.建立共享文件夹5.设置SMB/CIFS服务7.测试7.1.速度测试 使用hostname访问 把网口和wifi设置成DHCP,使用hostname访问,这样把NAS拿到任何地方都不需要配置了,自动联网进行访问. #网络->常规 #设…

Matlab仿真2ASK/OOK、2FSK、2PSK、QPSK、4QAM在加性高斯白噪声信道中的误码率与归一化信噪比的关系

本文为学习所用&#xff0c;严禁转载。 本文参考链接 https://zhuanlan.zhihu.com/p/667382398 QPSK代码及高斯白噪声如何产生 https://ww2.mathworks.cn/help/signal/ref/butter.html 滤波器 https://www.python100.com/html/4LEF79KQK398.html 低通滤波器 本实验使用matlab仿…

静态HTTP的优势:速度、安全性和可扩展性,一个都不能少!

大家好&#xff0c;今天我们来聊聊静态HTTP的优势。有人可能会说&#xff1a;“静态HTTP&#xff0c;不就是那些不会动的网页吗&#xff1f;”错&#xff01;静态HTTP可不仅仅是静止不动的&#xff0c;它可是让网站速度飞快、安全稳定、扩展性强的神器&#xff01;不信&#xf…

TomcatHttp协议

1 javaWEB 1.1 Web概述 Web在英文中的含义是网状物&#xff0c;网络。在计算机领域&#xff0c;它通常指的是后者&#xff0c;即网络。像我们前面接触的WWW&#xff0c;它是由3个单词组成的&#xff0c;即&#xff1a;World Wide Web&#xff0c;中文含义是万维网。而我们前…

HarmonyOS应用程序包-(下)

HarmonyOS应用程序包-(下) 1.多HAP的开发调试与发布部署流程 多HAP的开发调试与发布部署流程如下图所示。 图1 多HAP的开发调试与发布部署流程 开发 开发者通过DevEco Studio工具按照业务的需要创建多个Module&#xff0c;在相应的Module中完成自身业务的开发。 调试 通过…

echarts实现七天天气预报

效果图 实现代码 const imglist {"晴": data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAAXNSR0IArs4c6QAAByJJREFUaEO9Wl1rFGcUfs67u/nYbOIXJlGopBTx27aQWGOwSMS75sao2BtBQVD/gWCJouA/sIWCBW8M1nqjd1IplW5DYqLWEUoSi9iEjHaJmaz2d05ZWd2Nj…

KingbaseV8R6单实例定时全量备份步骤

此场景为单机数据库节点内部备份&#xff0c;方便部署和操作&#xff0c;但备份REPO与数据库实例处于同一个物理主机&#xff0c;冗余度较低。 前期准备 配置ksql免密登录(必须) 在Kingbase数据库运行维护中&#xff0c;经常用到ksql工具登录数据库&#xff0c;本地免密登录…

Linux系统编程(六):进程(下)

参考引用 UNIX 环境高级编程 (第3版)嵌入式Linux C应用编程-正点原子 1. 进程与程序 1.1 main() 函数由谁调用&#xff1f; C 语言程序总是从 main 函数开始执行int main(void) int main(int argc, char *argv[]) // 如果需要向应用程序传参&#xff0c;则选择该种写法操作系…