定位 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.pswp.cn/news/536707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536707.shtml
英文地址,請注明出處:http://en.pswp.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…

裝飾 Web3 項目的用戶交互界面(Web3項目二實戰之四)

用戶交互界面是Web3項目必不可少的,畢竟,Web3項目最終是面向用戶的,所以,Web3項目總得需要一個優美的UI界面,已達到用戶在視覺上精彩盛宴。 誠然,一個Web3項目若到了用戶交互界面,大體上,這個Web3項目也將告一段落了。 沒錯,Web3第二個項目,也將終結于本篇,順勢拉開…

線下終端門店調研包含哪些內容

品牌渠道一般分為線上和線下&#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;致力干助力各行/互聯網創業騰飛并獲取更多的收益。從消…

Swift 檢測 iCloud狀態

Show me the code: func isICloudContainerAvailable() -> Bool {if let _ FileManager.default.ubiquityIdentityToken {return true} else {return false} }推薦一下剛上線的 App 熊貓小賬本&#xff0c;里面有用到這篇博客講的內容 熊貓小賬本 一個簡潔的記賬 App&…

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注入的問題。前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊…

tinymce自定義工具欄

tinymce自定義工具欄 話不多說直接上代碼&#xff0c;此處添加 imgs 的工具為例 initTinymce() {const _this thisreturn {language_url: https://cdn.jsdelivr.net/npm/tinymce-i18n20.12.25/langs5/zh_CN.js,language: zh_CN,body_class: panel-body ,object_resizing: fal…

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…

鴻蒙插槽?全局插槽和局部插槽?數據不更新?

Builder的基本語法數據是不會響應式的 第一種&#xff1a; 全局插槽&#xff1a;傳入的變量是state數據&#xff08;數據是對象也一樣&#xff09;&#xff0c;但是button點擊更改&#xff0c;并沒有任何反應。規則就是不更新 Entry Component struct Demo02 {State message:…

TomcatHttp協議

1 javaWEB 1.1 Web概述 Web在英文中的含義是網狀物&#xff0c;網絡。在計算機領域&#xff0c;它通常指的是后者&#xff0c;即網絡。像我們前面接觸的WWW&#xff0c;它是由3個單詞組成的&#xff0c;即&#xff1a;World Wide Web&#xff0c;中文含義是萬維網。而我們前…