使用 VisualVM 进行性能分析及调优

VisualVM使用方法

JAVA 的内存泄露分析

JVisualVM

配置远程 VisualVM

要进行远程监控,本机的 VisualVM 就必须和远程的 JVM 要进行通信, Visualvm 目前支持两种 remote connection 方式。分别是 jstatd 和 JMX 方式:这里主要介绍的 JMX 方式。

修改 Tomcat 配置

  1. 进入 TOMCAT_HOME\bin 目录
  2. 打开 catalina.sh 文件,加入如下信息:

image.png

  1. CATALINA_OPTS="$CATALINA_OPTS
  2. -Dcom.sun.management.jmxremote=true
  3. -Dcom.sun.management.jmxremote.port=8099(配置远程 connection 的端口号的)
  4. -Dcom.sun.management.jmxremote.ssl=false(指定了 JMX 是否启用 ssl)
  5. -Dcom.sun.management.jmxremote.authenticate=false( 指定了JMX 是否启用鉴权(需要用户名,密码鉴权))
  6. -Djava.rmi.server.hostname=192.168.0.1(配置 server 的 IP)
  7. "

修改远程机器JDK配置文件

  1. 进入 JAVA_HOME\jre\lib\management\ 目录
  2. 拷贝 jmxremote.password.template 这个文件到当前目录, 并改名为 jmxremote.password
  3. 打开 jmxremote.password 文件,去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号

以下方式需要配置用户名、密码:

  1. CATALINA_OPTS="$CATALINA_OPTS
  2. -Dcom.sun.management.jmxremote
  3. -Djava.rmi.server.hostname=192.168.23.1
  4. -Dcom.sun.management.jmxremote.port=9999
  5. -Dcom.sun.management.jmxremote.ssl=false
  6. -Dcom.sun.management.jmxremote.authenticate=true
  7. -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
  8. -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
  9. # authenticate = true开启鉴权功能
  10. # access.file: 权限文件路径(JAVA_HOME/jre/lib/management/)
  11. # password.file: 密码文件路径

将 JAVA_HOME/jre/lib/management 下面的 jmxremote.access 和 jmxremote.password.template 拷贝到 Tomcat的 conf 目录下,并对两个文件做以下修改:
jmxremote.password.template 文件名修改为 jmxremote.password
修改两个文件的权限:

  1. chmod 600 jmxremote.access
  2. chmod 600 jmxremote.password

修改 jmxremote.access 文件,将文件最后两行显示【monitorRole和controlRole】的注释取消,其中 monitorRole 为只拥有只读权限的角色,controlRole 有更高权限:读写等。编辑完成后,保存。
image.png
修改 jmxremote.password 文件。同样将文件最后两行显示【monitorRole和controlRole】的注释取消,两个用户名后面的字符即密码,然后保存。
image.png

  1. 重启 Tomcat