博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jvm排查工具箱jvm-tools
阅读量:6312 次
发布时间:2019-06-22

本文共 4377 字,大约阅读时间需要 14 分钟。

  hot3.png

本文主要介绍的是一款jvm排查工具箱:jvm-tools。除了对基本jvm封装外,还提供了jmx访问以及火焰图的生成。

下载

  • - all commands without mxdump
  • - all commands

实例

cpu and memory usage

java -jar sjk-0.9.jar ttop -o CPU -n 10 -p pidjava -jar sjk-0.9.jar ttop -o USER -n 10 -p pidjava -jar sjk-0.9.jar ttop -o SYS -n 10 -p pidjava -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 1Monitoring 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 pidjava -jar sjk-0.9.jar hh -n 10 --dead-young -p pidjava -jar sjk-0.9.jar hh -n 10 --live -p pid

查看对象统计

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 1MBean server connectedCollecting 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 secondsjava -jar sjk-0.9.jar stcap -o dump.std -t 30000 -p pidjava -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 1Writing to /dump.stdCollected 506Collected 1012Collected 1518Collected 2001Collected 2507//......Trace dumped: 123211

查看堆栈或生成火焰图

java -jar sjk-0.9.jar ssa -f dump.std --printjava -jar sjk-0.9.jar ssa -f dump.std --histojava -jar sjk-0.9.jar ssa -f dump.std --flame > flame.svg

输入图片说明

jmx

java -jar sjk-0.9.jar --help mxjava -jar sjk-0.9.jar mx -mi -b java.lang:type=Threading -p pidjava -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 1java.lang:type=Memorycommitted: 68194304init:      33554432max:       508887040used:      49297880

小结

使用ttop命名查看cpu高的线程,以及使用stack stcap和ssa生成火焰图相当便利,值得推荐。

doc

转载于:https://my.oschina.net/go4it/blog/1600127

你可能感兴趣的文章
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>