JVM 监控工具——jconsole
【官方文档】:Using JConsole
1. 简介
JConsole是一个内置Java性能分析器,可以从命令行或在GUI shell中运行。您可以轻松地使用JConsole(或者,它更高端的“近亲” VisualVM)来监控Java应用程序性能和跟踪Java中的代码。
JConsole 工具以 java.lang.management API 为基础进行构建。JConsole 将连接到运行在同一个工作站或远程工作站上的应用程序。这些应用程序必须配置为允许访问。
JConsole 连接到 Java 应用程序之后,会报告该应用程序的相关信息。详细信息包括内存使用情况、正在运行的线程和已装入类。该数据将帮助您监控应用程序和 JVM 的行为。该信息有助于了解性能问题、内存使用问题、挂起或死锁。
2. 基本配置
2.1 JVM启动参数配置
-Djava.rmi.server.hostname=127.0.0.1
配置的主机名信息,jconsole 远程连接时需要输入主机名
-Dcom.sun.management.jmxremote
开始 jmxremote 配置
-Dcom.sun.management.jmxremote.port=8899
jconsole 连接的端口
-Dcom.sun.management.jmxremote.authenticate=false
是否认证信任凭证
-Dcom.sun.management.jmxremote.ssl=false
是否启用SSL
2.2 信任凭证配置
如果设置了信任凭证校验,则需要使用指定的用户及密码远程连接。
配置文件在 jre/lib/management 目录下:
2.2.1 jmxremote.access
定义远程连接用户的操作权限
2.2.2 jmxremote.password
定义远程连接用户的密码信息(明文存储)
3. 本地连接
3.1 启动 jconsole
在JDK的 bin 目录下启动 jconsole.exe ,界面如下:
jconsole会显示本地Java虚拟机上运行的Java程序
3.2 Windows下查询程序的pid
根据程序监听的端口号查询对应的 PID
netstat -ano | findStr 9527
3.3 连接程序
界面选择 pid 为 15160 的程序进行连接,连接成功后如下所示:
4. 远程连接
远程连接不知道是环境问题,还是别的原因,死活连不上,最后用 jvisualvm 连接成功。
中间参考了一下几篇文章,还算干货,大家可以参考一下:
【参考文章】:JConsole远程连接配置
【参考文章】:windows下如何正确使用Jconsole远程连接linux主机上的JVM
【参考文章】:JVM监测分析JConsole
5.jvisualvm
配置基本和 jconsole 一样;