深入理解虚拟机之虚拟机性能监控和故障处理工具

《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版》读书笔记与常见面试题总结

本节常见面试题(推荐带着问题阅读,问题答案在文中都有提到):

JVM调优的常见命令行工具有哪些?

1 概述

给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。经常 使用适当的虚拟机监控和分析工具可以加速我们分析数据、定位解决问题的速度,但在学习工具前,也应当意识到工具永远都是知识技能的一层包装,并没有什么工具是“秘密武器”,不可能学会了就能包治百病。

2 JDK命令行工具(JDK安装的bin目录下):

下面这些命令行工具java.exe以及javac.exe我们都很熟悉了,下面我们主要看看其他命令行工具的作用。

JDK监控和故障处理工具

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

2.1 jps:虚拟机进程状况工具

JDK的很多小工具的名字都参考了UNIX命令的命名方式,jps(JVM Process Status) 是其中的典型。除了名字像UNIX的ps命令外,它的功能也和ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID)。虽然功能比较单一,但它是使用最高的JDK命令行工具,因为其他的JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程。

jps的常用功能选项:

测试:

上面输出了我正在运行程序的包名下的类名:

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

jstat(JVM Statistics Monitoring Tool) 使用于监视虚拟机各种运行状态信息的命令行工具。 它可以显示本地或者远程(需要远程主机提供RMI支持)虚拟机进程中的类信息、内存、垃圾收集、JIT编译等运行数据,在没有GUI,只提供了纯文本控制台环境的服务器上,它将是运行期间定位虚拟机性能问题的首选工具。

jstat主要工具选项:

测试:

2.3 jinfo:Java配置信息工具

jinfo(Configuration Info for Java) 的作用是实时地查看和调整虚拟机各项参数。 使用jps命令的-v可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,可以使用jinfo的-flag选项进行查询,jinfo还可以使用-sysprops选项把虚拟机进程的System.getProperties()的内容打印出来。

测试:

2.4 jmap:Java内存映像工具

jmap(Memory Map for Java)命令用于生成堆转储快照。 如果不使用jmap命令,要想获取Java堆转储,可以使用“-XX:+HeapDumpOnOutOfMemoryError”参数,可以让虚拟机在OOM异常出现之后自动生成dump文件,Linux命令下可以通过kill -3发送进程退出信号也能拿到dump文件。

jmap的作用并不仅仅是为了获取dump文件,它还可以查询finalize执行队列、Java堆和永久代的详细信息,如空间使用率、当前使用的是哪种收集器等。和jinfo一样,jmap有不少功能在Windows平台下也是受限制的,除了生成dump文件的-dump选项和用于查看每个类的实例、空间占用统计的-histo选项在所有操作系统都提供之外,其余选项都只能在Linux和Solaris系统下使用。

2.5 jstack:Java堆栈跟踪工具

jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合.

生成线程快照的目的主要是定位线程长时间出现停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者在等待些什么资源。**

3 JDK可视化工具:

JConsole和VisualVM是两个功能强大的可视化工具。

从Java 5开始 引入了 JConsole,JConsole 是一个内置 Java 性能分析器。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” jvisualvm )来监控 Java 应用程序性能和跟踪 Java 中的代码。(推荐使用升级版 JConsole 即 jvisualvm 。)

控制台启动或者直接双击可执行程序。

如下图所示(这里就不具体介绍某一点了):

我们再来看看jvisualvm

欢迎关注我的微信公众号:"Java面试通关手册"(一个有温度的微信公众号,期待与你共同进步~~~坚持原创,分享美文,分享各种Java学习资源):

《vSphere 故障排除》介绍了 vCenter Server 实施及相关组件的故障排除问题过程。 A Active Directory 24 Auto Deploy 超时错误 18 重定向问题 19 coredump 20 错误的映像 18 DHCP 地址 22 故障排除 18 TFTP 服务器 21 网络引导问题 22 无法完成引导 20 无法引导 21 映像配置文件警告 19 Auto Deploy 升级 23 C 插槽大小 35, 36 插件, 故障排除 34 超时错误, Auto Deploy 18 CHAP 身份验证 56 重复会话错误, vSphere Web Client 31 config.vpxd.das.electionWaitTimeSec 39 存储 DRS 错误 52 放置位置 53 关联性规则 52 规则违反 52 故障排除 49 建议 53 禁用 52 OVF 模板 52 删除关联性规则 52 无法应用建议 53 已禁用 49 存储 DRS 建议, 故障排除 53 存储故障排除 55 存储设备, 显示问题 55 存储适配器, 故障排除 62 D 导出许可证使用情况 80 登录, vSphere Web Client 31 Disk.SchedNumReqOutstanding 60 Distributed Switch, 无法移除主机 68 低吞吐量, Windows 虚拟机 73 地址已在使用中, Jetty 服务器 30 DNS 31 队列深度 58, 59 F 防火墙 基于网络 33 Windows 32 Fault Tolerance 故障排除 7–9 日志记录 10 Fault Tolerance 故障排除 7 非 ASCII 字符 61 分布式端口组, 虚拟机无法通信 75 flash player, 内存不足 30 ft.maxSwitchoverSeconds 8 辅助虚拟机 39, 40 G 高级设置, Disk.SchedNumReqOutstanding 60 高级运行时信息 36 功能 81, 82 gpupdate /force 命令 31 GUID 31 孤立的虚拟机, 恢复 12 过载的主机 8 故障排除 插件 34 扩展 34 链接模式 31 USB 设备 10, 11 vCenter Server 27 vCenter Server Appliance 28 vSphere Web Client 27, 29 证书 33 故障排除许可 77 故障切换, 已断开虚拟机连接 71 H HBA, 队列深度 58 合规性故障, 主机配置文件 24 红色群集 35
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值