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=

原文地址:https://www.cnblogs.com/barrywxx/p/9614313.html

时间: 2024-11-08 21:50:51

JVM监控命令的相关文章

JVM监控命令详解(转)

JVM监控命令基本就是 jps.jstack.jmap.jhat.jstat 几个命令的使用就可以了 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解. 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Conte

jvm监控命令介绍

1.jstack介绍 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题.另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的. 命令格式 $jstack [ option ] pid $jst

jvm监控命令-jstat

jstat 用于查看服务器上某个服务的GC情况. 一般使用方式jstat –gcpid或jstat –utilpid 时间间隔-每个一定时间(指定的时间间隔)输出一次进程pid的内存情况及gc情况. 类加载统计(-class) Loaded Bytes Unloaded Bytes Time 加载class的数量 所占用空间大小 未加载数量 未加载占用空间 时间 [[email protected] lillcol]# jstat -class 22363 Loaded Bytes Unload

JVM的监控命令

JVM监控命令基本就是 jps.jstack.jmap.jhat.jstat 几个命令的使用就可以了 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解. 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Conte

JVM监控和调优常用命令工具总结

JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非常方便了.本文总结了最常用的命令行工具及其常用参数解释,图形化监控工具的用法,仅供参考. jps Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了,简单而方便. 命令格式: jps [options] [hos

linux系统监控命令

ps命令 命令:ps -mp pid -o THREAD,tid,time   或者  ps -Lfp pid 结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息. 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列. 比如这里找到了一个TID : 30834 ,所占用的TIME时间最高. 通过 printf "%x\n" 30834 首先转化成16进制, 继续通过jstack命令du

常用的linux系统监控命令

常用的linux系统监控命令 博客分类: linux 服务器 记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了 找到最耗CPU的java线程 ps命令 命令:ps -mp pid -o THREAD,tid,time   或者  ps -Lfp pid 结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息. 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列. 比如这里找到

总结:常用的Linux系统监控命令

记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了 找到最耗CPU的java线程 ps命令 命令: ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid 结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息. 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列. 比如这里找到了一个TID : 30834 ,所占用的TIME时间最高. 通过

Eclipse 中设置JVM 内存及JVM监控调优

当我们在IDE控制台发现: 说明我们给jvm的持久代设置的值太小,此时你需要打开eclispe 中window->preferences->Java->Installed JRE ,点击右侧的Edit 按钮,在编辑界面中的 "Default VM Arguments "选项中,将-XX:PermSize及  -XX:MaxPermSize的值加大. 如果你懂jvm性能调优的话,从jstat监控中可以得知其中的关系.以下为实际演示操作: 1,按照如下图步骤将-XX:Pe