JVM监控命令
1.概述
Jcmd是一个诊断Jvm的命令集工具, 集成了包括Jps, Jstack以及采集JFR信息等功能. 它必须运行在被诊断Jvm进程的同一台机器上.
1)查询JVM进程及PID
/dapeng-container/bin # jcmd -l
252 sun.tools.jcmd.JCmd -l
13 com.github.dapeng.bootstrap.Bootstrap
2)查询指定进程及
/dapeng-container/bin # jcmd 13 VM.flags
13:
-XX:CICompilerCount=3 -XX:+HeapDumpOnOutOfMemoryError -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=268435456 -XX:MaxNewSize=134217728 -XX:MinHeapDeltaBytes=524288 -XX:NewRatio=1 -XX:NewSize=134217728 -XX:OldSize=134217728 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=30 -XX:ThreadStackSize=256 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC -XX:+UseParallelOldGC
2.功能描述
2.1 查看Jvm进程
等同于Jps,但信息更加详细
jcmd -l
166 sun.tools.jcmd.JCmd
11 com.github.dapeng.bootstrap.Bootstrap
2.2 查看某Jvm进程可用操作
jcmd pid help
jcmd 3202 help
3202:
The following commands are available:
JFR.stop
JFR.start
JFR.dump
JFR.check
VM.native_memory
VM.check_commercial_features
VM.unlock_commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.run_finalization
GC.run
VM.uptime
VM.flags
VM.system_properties
VM.command_line
VM.version
help
For more information about a specific command use 'help <command>'.
2.3 查看操作的帮助信息(low)
可查看操作命令的说明, 语法以及该操作对jvm进程的影响
# jcmd 3202 help GC.run
3202:
GC.run
Call java.lang.System.gc().
Impact: Medium: Depends on Java heap size and content.
Syntax: GC.run
2.4 启用JVM高级特性(low)
启用某些高级的特性,例如JFR
# jcmd 12 VM.check_commercial_features
12:
Commercial Features are locked.
# jcmd 12 VM.unlock_commercial_features
12:
Commercial Features now unlocked.
# jcmd 12 VM.check_commercial_features
12:
Commercial Features are unlocked.
Status of individual features:
Java Flight Recorder has not been used.
Resource Management is disabled.
Current Memory Restriction: None (0)
2.5 开始记录JFR飞行记录仪(medium)
在 JDK 8u40 之前,JVM 必须带启动标记: -XX:+UnlockCommercialFeatures -XX:FlightRecorder,从 JDK 8u40 开始,JFR 可以在运行时启用。
使用前打开JVM的高级特性:
jcmd $PID VM.unlock_commercial_features
# jcmd 12 help JFR.start
12:
JFR.start
Starts a new JFR recording
Impact: Medium: Depending on the settings for a recording, the impact can range from low to high.
Permission: java.lang.management.ManagementPermission(monitor)
Syntax : JFR.start [options]
Options: (options must be specified using the <key> or <key>=<value> syntax)
name : [optional] Name that can be used to identify recording, e.g. \"My Recording\" (STRING, no default value)
defaultrecording : [optional] Starts the default recording, can only be combined with settings. (BOOLEAN, false)
dumponexit : [optional] Dump running recording when JVM shuts down (BOOLEAN, no default value)
settings : [optional] Settings file(s), e.g. profile or default. See JRE_HOME/lib/jfr (STRING SET, no default value)
delay : [optional] Delay recording start with (s)econds, (m)inutes), (h)ours), or (d)ays, e.g. 5h. (NANOTIME, 0)
duration : [optional] Duration of recording in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 300s. (NANOTIME, 0)
filename : [optional] Resulting recording filename, e.g. \"/home/user/My Recording.jfr\" (STRING, no default value)
compress : [optional] GZip-compress the resulting recording file (BOOLEAN, false)
maxage : [optional] Maximum time to keep recorded data (on disk) in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 60m, or 0 for no limit (NANOTIME, 0)
maxsize : [optional] Maximum amount of bytes to keep (on disk) in (k)B, (M)B or (G)B, e.g. 500M, or 0 for no limit (MEMORY SIZE, 0)
jcmd $PID JFR.start name=dapeng,duration=120s
等待至少duration(本文设定120s)后,执行命令:
jcmd $PID JFR.dump name=dapeng,duration=120s filename=dapeng.jfr(注意,文件名必须为.jfr后缀)
检查JFR状态
jcmd $PID JFR.check name=dapeng,duration=120s
停止JFR
jcmd $PID JFR.stop name=dapeng,duration=120s
2.2 查看进程的Jvm参数(low)
例如GC算法, 内存分配等
# jcmd 12 VM.flags
12:
-XX:CICompilerCount=3 -XX:+HeapDumpOnOutOfMemoryError -XX:InitialHeapSize=2147483648 -XX:MaxHeapSize=2147483648 -XX:MaxNewSize=715653120 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=715653120 -XX:OldSize=1431830528 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:ThreadStackSize=256 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
2.2 查看进程的命令行启动参数(low)
例如GC算法, 内存分配等
# jcmd 12 VM.command_line
12:
VM Arguments:
jvm_args: -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8 -Dname=commonData_service -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8 -Xms256m -Xmx256m -Xloggc:/dapeng-container/bin/../logs/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGC -XX:+HeapDumpOnOutOfMemoryError -Dsoa.base=/dapeng-container/bin/../ -Dsoa.run.mode=native -Dsoa.transactional.enable=false -Dsoa.monitor.enable=true -Dsoa.core.pool.size=100 -Xms2g -Xmx2g -Xss256K
java_command: com.github.dapeng.bootstrap.Bootstrap
java_class_path (initial): ./dapeng-bootstrap.jar
Launcher Type: SUN_STANDARD
2.2 查看JDK版本(low)
# jcmd 12 VM.version
12:
Java HotSpot(TM) 64-Bit Server VM version 25.131-b11
JDK 8.0_131
2.2 查看Jvm进程运行时间(low)
# jcmd 12 VM.uptime
12:
9530.265 s
2.2 查看Jvm系统变量(low)
# jcmd 12 VM.system_properties
12:
#Fri Apr 13 00:31:37 GMT+08:00 2018
sun.jun.encoding=UTF-8
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=/opt/oracle-server-jre/jre/lib/amd64
java.vm.version=25.131-b11
java.vm.vendor=Oracle Corporation
java.vendor.url=http\://java.oracle.com/
path.separator=\:
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
soa.base=/dapeng-container/bin/../
file.encoding.pkg=sun.io
user.country=US
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=unknown
java.vm.specification.name=Java Virtual Machine Specification
user.dir=/dapeng-container/bin
java.runtime.version=1.8.0_131-b11
soa.monitor.enable=true
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
java.endorsed.dirs=/opt/oracle-server-jre/jre/lib/endorsed
os.arch=amd64
name=commonData_service
java.io.tmpdir=/tmp
line.separator=\n
java.vm.specification.vendor=Oracle Corporation
soa.core.pool.size=100
os.name=Linux
sun.jnu.encoding=ANSI_X3.4-1968
java.library.path=/usr/java/packages/lib/amd64\:/usr/lib64\:/lib64\:/lib\:/usr/lib
sun.nio.ch.bugLevel=
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=3.10.0-514.el7.x86_64
user.home=/root
soa.transactional.enable=false
user.timezone=GMT+08\:00
java.awt.printerjob=sun.print.PSPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
java.class.path=./dapeng-bootstrap.jar
user.name=root
java.vm.specification.version=1.8
sun.java.command=com.github.dapeng.bootstrap.Bootstrap
java.home=/opt/oracle-server-jre/jre
sun.arch.data.model=64
user.language=en
java.specification.vendor=Oracle Corporation
soa.run.mode=native
awt.toolkit=sun.awt.X11.XToolkit
java.vm.info=mixed mode
java.version=1.8.0_131
java.ext.dirs=/opt/oracle-server-jre/jre/lib/ext\:/usr/java/packages/lib/ext
sun.boot.class.path=/opt/oracle-server-jre/jre/lib/resources.jar\:/opt/oracle-server-jre/jre/lib/rt.jar\:/opt/oracle-server-jre/jre/lib/sunrsasign.jar\:/opt/oracle-server-jre/jre/lib/jsse.jar\:/opt/oracle-server-jre/jre/lib/jce.jar\:/opt/oracle-server-jre/jre/lib/charsets.jar\:/opt/oracle-server-jre/jre/lib/jfr.jar\:/opt/oracle-server-jre/jre/classes
java.vendor=Oracle Corporation
file.separator=/
java.vendor.url.bug=http\://bugreport.sun.com/bugreport/
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.endian=little
sun.cpu.isalist=
JVM监控命令的更多相关文章
- JVM监控命令详解(转)
JVM监控命令基本就是 jps.jstack.jmap.jhat.jstat 几个命令的使用就可以了 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外 ...
- jvm监控命令介绍
1.jstack介绍 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在 ...
- jvm监控命令-jstat
jstat 用于查看服务器上某个服务的GC情况. 一般使用方式jstat –gcpid或jstat –utilpid 时间间隔-每个一定时间(指定的时间间隔)输出一次进程pid的内存情况及gc情况. ...
- JVM的监控命令
JVM监控命令基本就是 jps.jstack.jmap.jhat.jstat 几个命令的使用就可以了 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外 ...
- JVM基础系列第15讲:JDK性能监控命令
查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...
- JVM监控和调优常用命令工具总结
JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非 ...
- Java系列笔记(4) - JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...
- Linux系统监控命令及如何定位到Java线程
>>PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID ...
- jvm 监控
jvm监控可视化的有 jconsole .jmc .jvisualvm 其中jvisualvm开启一些监控会导致他自己关闭. 并且jdk下有很多工具可以进行jvm监控, jmap -histo:liv ...
随机推荐
- PHP 的 uniqid 函数产生的 id 真的是唯一的么?
PHP 的 uniqid 函数产生的 id 真的是唯一的么? 最近使用到了 uniqid,就产生了疑问?uniqid 生成的 id 由什么组成?真的是唯一的么?什么情况下会产生冲突? 从文档中看到 u ...
- @Scheduled不执行的原因
1. 今天用@Schedule做了一个定时任务,希望凌晨1点执行,代码如下 @Service public class ParseJsonService { @Scheduled(cron = &qu ...
- 系列博文-Three.js入门指南(张雯莉)-网格 setInterval方法 requestAnimationFrame方法 使用stat.js记录FPS
第6章 动画 在本章之前,所有画面都是静止的,本章将介绍如果使用Three.js进行动态画面的渲染.此外,将会介绍一个Three.js作者写的另外一个库,用来观测每秒帧数(FPS). CSS3动画那么 ...
- objectid.go源码阅读
)) } // func), ), ), ), ])<<])<<)]) } //获取])<<])<<])<<]), //转化为十进制的int ...
- 不吹不擂,你想要的Python面试都在这里了【315+道题】
写在前面 近日恰逢老男孩全栈8期毕业季,课程后期大家“期待+苦逼”的时刻莫过于每天早上内容回顾和面试题问答部分[临近毕业每天课前用40-60分钟对之前内容回顾.提问和补充,专挑班里不爱说话就的同学回答 ...
- BZOJ_3932_[CQOI2015]任务查询系统_主席树
BZOJ_3932_[CQOI2015]任务查询系统_主席树 题意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,P ...
- oracle常用系统函数
一.字符类函数 字符类函数是专门用于字符处理的函数,处理的对象可以是字符或者字符串常量,也可以是字符类型的列. 1.ASCII(c)和CHR(i) ASCII(c)函数用于返回一个字符的ASCII码, ...
- Python多版本管理-pyenv
经常遇到这样的情况: 系统自带的Python是2.x,自己需要Python 3.x,此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存,pye ...
- 危险 AI 花名册
简评:臭不要脸 AI 名单,another side of AI. 这是一个可怕的 AI 清单,上面的各种商用 AI 项目都用于一些很恶劣的目的.请大家保持警惕. 区别对待类 · HireVue - ...
- Scala 枚举介绍及深入应用
本文详细地总结了Scala枚举的几种实现方式,对我们更好地进行函数式编程有很好地指导和帮助. Scala 枚举示例和特性 枚举(Enumerations)是一种语言特性,对于建模有限的实体集来说特别有 ...