Hello World

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 一样;

posted @ 2019-09-19 20:25  小小忧愁米粒大  阅读(6203)  评论(0编辑  收藏  举报
瞅啥瞅,好好看书