首页 > 其他分享 >虚拟机性能监控与故障处理工具

虚拟机性能监控与故障处理工具

时间:2022-10-28 14:34:41浏览次数:46  
标签:快照 dump 虚拟机 故障 线程 监控 监视 Java

JDK 命令行工具

运行日志、异常堆栈、GC 日志、线程快照(threaddump/javacore 文件)、堆转储快照(heapdump/hprof 文件)等

名称 主要作用
jps JVM Process Status Tool,显示制定系统内所有的 HotSpot 虚拟机进程
jstat JVM Statistics Monitoring Tool,用于收集 HotSpot 虚拟机各方面的运行数据
jinfo Configuration Info for Java,显示虚拟机配置信息
jmap Memory Map for Java,生成虚拟机的内存转储快照( heapdump 文件)
jhat JVM Heap Dump Browser,用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果
jstack Stack Trace for Java,显示虚拟机的线程快照

jps:虚拟机进程状况工具

jps [ options] [ hostid ]

选项 作用
-q 只输出 LVMID,省略主类的名称
-m 输出虚拟机进程启动时传递给主类 main() 函数的参数
-l 输出主类的全名,如果进程执行的是 Jar 包,输出 Jar 路径
-v 输出虚拟机进程启动时 JVM 参数

jstat:虚拟机统计信息监视工具

显示虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据,没有 GUI 图形界面,只提供了纯文本控制台环境等服务器上,是运行期定位虚拟机性能问题的首选工具

命令格式:

jstat [ option vmid [interval [ s | ms ] [ count ] ] ]

如果是本地虚拟机进程,VMID 和 LVMID 是一致的;如果是远程虚拟机主机,那 VMID 的格式应当是:

[ protocol : ] [ // ] lvmid [ @hostname [ :port ] / servername ]

参数 interval 和 count 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。

比如,每250毫秒查询一次进程2764垃圾收集情况,一共查询20次:

jstat -gc 2764 250 20

选项 option 代表用户希望查询的虚拟机信息,主要分3类:类装载、垃圾收集、运行期编译情况

选项 作用
-class 监视类装载、卸载数量、总空间以及类装载所耗费的时间
-gc 监视 Java 堆状况,包括 Eden 区、两个 survivor 区、老年代、永久代等的容量、已用空间、GC 时间合计等信息
-gccapacity 监视内容与 -gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大、最小空间
-gcutil 监视内容与 -gc 基本相同,但输出主要关注已使用空间占总空间的百分比
-gacause 与 -gcutil 功能一样,但是会额外输出导致上一次 GC 产生的原因
-gcnew 监视新生代 GC 状况
-gcnewcapacity 监视内容与 -gcnew 基本相同,输出主要关注使用到的最大、最小空间
-gcold 监视老年代 GC 状况
-gcpermcapacity 监视内容与 -gcold 基本相同,输出主要关注使用到的最大、最小空间
-compiler 输出 JIT 编译器编译过的方法、耗时等信息
-printcompilation 输出已经被 JIT 编译的方法

jinfo:Java 配置信息工具

实时地查看和调整虚拟机各项参数

命令格式:

jinfo [ option ] pid

jmap:Java 内存映像工具

用于生成堆转储快照( 一般称 heapdump 或 dump 文件)

命令格式:

jmap [ option ] vmid

选项 作用
-dump 生成 Java 堆转储快照,格式为:-dump:[live, ]format=b, file=,其中 live 子参数说明是否只 dump 出存活的对象
-finalizerinfo 显示在 F-Queue 中等待 Finalizer 线程执行 finalize 方法的对象。只在 Linux/Solaris 平台下有效
-heap 显示 Java 堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在 Linux/Solaris 平台下有效
-histo 显示堆中对象统计信息,包括类、实例数量、合计容量
-permstat 以 ClassLoader 为统计口径显示永久代内存状态。只在 Linux/Solaris 平台下有效
-F 当虚拟机进程对 -dump 选项没有响应时,可使用这个选项强制生成 dump 快照。只在 Linux/Solaris 平台下有效

jhat:虚拟机堆转储快照分析工具

jhat 和 jmap 搭配使用,来分析 jmap 生成的堆转储快照。jhat 内置一个微型的 HTTP/HTML 服务器,生成 dump 文件的分析结果后,可以在浏览器中查看。一般不会使用 jhat 命令分析 dump 文件,原因有二:

  1. 一般不会在部署应用程序的服务器上直接分析 dump 文件,因为分析工作是一个耗时且耗硬件资源的过程
  2. jhat 的分析功能相对简陋,VisulaVM、专业分析 dump 文件的 Eclipse Memory Analyzer、IBM HeapAnalyzer等工具的分析功能更专业

jstack:Java 堆栈跟踪工具

生成虚拟机当前时刻的线程快照(一般称为 threaddump 或者 javacore 文件)。

线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等

命令格式:

jstack [ option ] vmid

选项 作用
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法的话,可以显示 C/C++ 的堆栈

JDK 的可视化工具

JConsole:Java 监视与管理控制台

基于 JMX 的可视化监视、管理工具

启动 JConsole:JDK/bin 目录下的 “jconsole.ext”

VisualVM:多合一故障处理工具

除了运行监视、故障处理外,还提供其他功能,如性能分析。不需要被监视的程序基于特殊 Agent 运行,因此 VisualVM 对应用程序的实际性能的影响很小,使得它可以直接应用在生产环境中。

VisualVM 基于 NetBeans 平台开发,具备插件扩展功能,通过插件扩展支持,VisualVM 可以做到:

  • 显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)
  • 监视应用程序的 CPU、GC、堆、方法区以及线程的信息(jstat、jstack)
  • dump 以及分析堆转储快照(jmap、jhat)
  • 方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法
  • 离线程序快照:收集程序的运行时配置、线程 dump、内存 dump 等信息建立一个快照,可以将快照发送开发者出进行 Bug 反馈
  • 其他 plugins 的无限的可能性

标签:快照,dump,虚拟机,故障,线程,监控,监视,Java
From: https://www.cnblogs.com/back-garden/p/16835956.html

相关文章