Performance Tuning -- 06 -- 使用JVisualVM监控远程Java进程

原文链接:Performance Tuning – 06 – 使用JVisualVM监控远程Java进程


相关文章:


JVisualVM 除了监控本地的 Java 进程外,还可以监控远程的 Java 进程


一、使用 JMX 远程监控 Tomcat

  • 修改 catalina.sh

    • 修改 Tomcat 的启动脚本,将 JMX 的相关参数添加进 Tomcat 的启动命令中,并启动 Tomcat

      JAVA_OPTS="$JAVA_OPTS 
      -Dcom.sun.management.jmxremote 
      -Dcom.sun.management.jmxremote.port=9997 
      -Dcom.sun.management.jmxremote.authenticate=false 
      -Dcom.sun.management.jmxremote.ssl=false 
      -Djava.net.preferIPv4Stack=true 
      -Djava.rmi.server.hostname=xxxxxxxxx"
      
    • 参数说明

      参数 含义
      -Dcom.sun.management.jmxremote 开启 JMX
      -Dcom.sun.management.jmxremote.port 指定远程连接端口
      -Dcom.sun.management.jmxremote.authenticate 是否启用验证
      -Dcom.sun.management.jmxremote.ssl 是否启用 ssl
      -Djava.net.preferIPv4Stack 是否优先使用 IPv4
      -Djava.rmi.server.hostname 指定远程连接地址
  • 连接远程 Tomcat
    在这里插入图片描述

    • 如上所示,先在远程标签中添加远程主机地址

    • 然后右击远程主机地址,点击添加 JMX 连接,输入之前设置的远程连接端口 (这里是 9997),点击确定即可

  • 查看 Tomcat 运行情况
    在这里插入图片描述

    • 如上所示,此时我们就可以将 Tomcat 当成一个本地 Java 进程来看待了,可以实时监控其内部的运行状态

二、使用 JMX 远程监控普通 Java 进程

  • 修改 jar 包的启动命令,添加 JMX 的相关参数即可,其余操作与远程监控 Tomcat 相同

    nohup java \
    -Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=9996 \
    -Dcom.sun.management.jmxremote.rmi.port=9996 \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Djava.net.preferIPv4Stack=true \
    -Djava.rmi.server.hostname=xxxxxxxxx -jar xxx.jar &
    
    • 需要注意的是,相比较启动 Tomcat 时添加的 JMX 参数,启动 jar 包时需要额外添加 -Dcom.sun.management.jmxremote.rmi.port 参数,将其端口与 -Dcom.sun.management.jmxremote.port 参数设置为一致即可

    • 这是因为 JMX 在远程连接时,会随机开启一个 RMI 端口来作为连接的数据端口,如果不指定,可能会导致连接失败,我们可以使用 -Dcom.sun.management.jmxremote.rmi.port 参数来指定该端口

posted @ 2020-05-25 23:31  GeneXu  阅读(74)  评论(0)    收藏  举报