jvm排查工具箱jvm-tools下載使用詳解
序
本文主要介紹的是一款jvm排查工具箱:jvm-tools。除了對基本jvm封裝外,還提供了jmx訪問以及火焰圖的生成。
下載
- sjk.jar - all commands without mxdump
- sjk-plus.jar - all commands
實(shí)例
cpu and memory usage
java -jar sjk-0.9.jar ttop -o CPU -n 10 -p pid java -jar sjk-0.9.jar ttop -o USER -n 10 -p pid java -jar sjk-0.9.jar ttop -o SYS -n 10 -p pid java -jar sjk-0.9.jar ttop -o ALLOC -n 10 -p pid
一個命令搞定排查造成cpu高的線程
root@d3daf1eca8ca:/# java -jar sjk-0.9.jar ttop -o CPU -n 10 -p 1 Monitoring threads ... 2018-01-01T07:18:26.773+0000 Process summary process cpu=6.88% application cpu=1.37% (user=1.30% sys=0.07%) other: cpu=5.51% thread count: 25 GC time=0.00% (young=0.00%, old=0.00%) heap allocation rate 390kb/s safe point rate: 1.5 (events/s) avg. safe point pause: 0.16ms safe point sync time: 0.01% processing time: 0.02% (wallclock time) [000068] user= 1.30% sys= 0.02% alloc= 386kb/s - RMI TCP Connection(1)-172.17.0.2 [000070] user= 0.00% sys= 0.03% alloc= 4268b/s - JMX server connection timeout 70 [000047] user= 0.00% sys= 0.01% alloc= 0b/s - NioBlockingSelector.BlockPoller-1 [000060] user= 0.00% sys= 0.01% alloc= 52b/s - http-nio-8080-AsyncTimeout [000058] user= 0.00% sys= 0.00% alloc= 23b/s - http-nio-8080-ClientPoller-0 [000014] user= 0.00% sys= 0.00% alloc= 0b/s - container-0 [000002] user= 0.00% sys= 0.00% alloc= 0b/s - Reference Handler [000003] user= 0.00% sys= 0.00% alloc= 0b/s - Finalizer [000004] user= 0.00% sys= 0.00% alloc= 0b/s - Signal Dispatcher [000013] user= 0.00% sys= 0.00% alloc= 0b/s - ContainerBackgroundProcessor[StandardEngine[Tomcat]]
histo
java -jar sjk-0.9.jar hh -n 10 --dead -p pid java -jar sjk-0.9.jar hh -n 10 --dead-young -p pid java -jar sjk-0.9.jar hh -n 10 --live -p pid
查看對象統(tǒng)計
root@d3daf1eca8ca:/# java -jar sjk-0.9.jar hh -n 10 --live -p 1 # Instances Bytes Type 1: 67025 9944432 [C 2: 9382 2209656 [I 3: 18413 1620344 java.lang.reflect.Method 4: 65810 1579440 java.lang.String 5: 4140 1283520 [B 6: 35735 1143520 java.util.concurrent.ConcurrentHashMap$Node 7: 8514 946936 java.lang.Class 8: 15267 610680 java.util.LinkedHashMap$Entry 9: 9027 505512 java.util.LinkedHashMap 10: 10414 494656 [Ljava.lang.Object; Total 475830 28175752
gc
java -jar sjk-0.9.jar gc -p pid
查看gc日志
root@d3daf1eca8ca:/# java -jar sjk-0.9.jar gc -p 1 MBean server connected Collecting GC stats ... [GC: Copy#112 time: 4ms mem: Survivor Space: 0k+135k->135k[max:17088k] Compressed Class Space: 5190k+0k->5190k[max:1048576k] Eden Space: 18496k-18496k->0k[max:137152k] Metaspace: 41247k+0k->41247k Tenured Gen: 27515k+0k->27515k[max:342720k]] [GC: Copy#113 time: 2ms interval: 6649ms mem: Survivor Space: 135k+304k->439k[max:17088k,rate:45.83kb/s] Compressed Class Space: 5243k+0k->5243k[max:1048576k,rate:0.00kb/s] Eden Space: 18496k-18496k->0k[max:137152k,rate:-2781.77kb/s] Metaspace: 41696k+0k->41696k[rate:0.00kb/s] Tenured Gen: 27515k+0k->27515k[max:342720k,rate:0.00kb/s]] [GC: Copy#114 time: 3ms interval: 675ms mem: Survivor Space: 439k+779k->1219k[max:17088k,rate:1154.48kb/s] Compressed Class Space: 5338k+0k->5338k[max:1048576k,rate:0.00kb/s] Eden Space: 18496k-18496k->0k[max:137152k,rate:-27401.48kb/s] Metaspace: 42470k+0k->42470k[rate:0.00kb/s] Tenured Gen: 27515k+0k->27515k[max:342720k,rate:0.00kb/s]]
stack
## collect 30 seconds java -jar sjk-0.9.jar stcap -o dump.std -t 30000 -p pid java -jar sjk-0.9.jar stcap -o dump.std -p pid
dump線程堆棧
root@d3daf1eca8ca:/# java -jar sjk-0.9.jar stcap -o dump.std -p 1 Writing to /dump.std Collected 506 Collected 1012 Collected 1518 Collected 2001 Collected 2507 //...... Trace dumped: 123211
查看堆?;蛏苫鹧鎴D
java -jar sjk-0.9.jar ssa -f dump.std --print java -jar sjk-0.9.jar ssa -f dump.std --histo java -jar sjk-0.9.jar ssa -f dump.std --flame > flame.svg

jmx
java -jar sjk-0.9.jar --help mx java -jar sjk-0.9.jar mx -mi -b java.lang:type=Threading -p pid java -jar sjk-0.9.jar mx -mg -b java.lang:type=Memory -f HeapMemoryUsage -p pid
查看jmx
root@d3daf1eca8ca:/# java -jar sjk-0.9.jar mx -mg -b java.lang:type=Memory -f HeapMemoryUsage -p 1 java.lang:type=Memory committed: 68194304 init: 33554432 max: 508887040 used: 49297880
小結(jié)
使用ttop命名查看cpu高的線程,以及使用stack stcap和ssa生成火焰圖相當(dāng)便利,值得推薦。
doc
以上就是jvm排查工具箱jvm-tools下載使用詳解的詳細(xì)內(nèi)容,更多關(guān)于jvm排查工具箱jvm-tools的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring Boot集成Seata實(shí)現(xiàn)基于AT模式的分布式事務(wù)的解決方案
Seata 是一款開源的分布式事務(wù)解決方案,致力于提供高性能和簡單易用的分布式事務(wù)服務(wù),這篇文章主要介紹了Spring Boot集成Seata實(shí)現(xiàn)基于AT模式的分布式事務(wù),需要的朋友可以參考下2024-08-08
使用socket進(jìn)行服務(wù)端與客戶端傳文件的方法
這篇文章主要介紹了使用socket進(jìn)行服務(wù)端與客戶端傳文件的方法,需要的朋友可以參考下2017-08-08
MyBatis類型轉(zhuǎn)換模塊的實(shí)現(xiàn)
MyBatis是一個持久層框架ORM框架,實(shí)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)和Java對象中的屬性的雙向映射,那么不可避免的就會碰到類型轉(zhuǎn)換的問題,本文主要介紹了MyBatis類型轉(zhuǎn)換模塊的實(shí)現(xiàn),感興趣的可以了解一下2023-09-09
Java Servlet 表單數(shù)據(jù)處理詳解
本文詳細(xì)介紹了Servlet處理表單數(shù)據(jù)的方法,涵蓋配置Servlet、獲取參數(shù)、數(shù)據(jù)驗(yàn)證及響應(yīng)內(nèi)容設(shè)置,深入探討 Servlet 如何接收、處理和響應(yīng)表單數(shù)據(jù),并提供一些最佳實(shí)踐,以確保數(shù)據(jù)處理的正確性和安全性,感興趣的朋友一起看看吧2026-05-05
MybatisPlus使用Wrapper實(shí)現(xiàn)條件查詢功能
這篇文章主要介紹了MybatisPlus使用Wrapper實(shí)現(xiàn)查詢功能,使用它可以實(shí)現(xiàn)很多復(fù)雜的查詢,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06

