JVisualVM连接远程Linux服务器

前言

使用JVisualVM远程监控服务器Tomcat运行情况

修改tomcat配置

第一步:修改catalina.sh

很多文章上都是添加CATALINA_OPTS变量,我试了之后发现停止报命令缺少。

正确的方式是在第一行上添加JAVA_OPTS变量,内容如下:

1
JAVA_OPTS="-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.0.15 -Dcom.sun.management.jmxremote.rmi.port=8999 -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"

假如你要给tomcat提升内存,可以在最前面加上,比如:

1
JAVA_OPTS="-server -Xms256m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=1025m -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.0.15 -Dcom.sun.management.jmxremote.rmi.port=8999 -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"

下面进行参数的详解:

-Djava.rmi.server.hostname=192.168.0.15 代表绑定本机的IP地址,如果想外网访问,请绑定外网IP

-Dcom.sun.management.jmxremote.port=8999 指的是JVisualVM要连接的端口,服务端需要保证这个端口没有被占用

-Dcom.sun.management.jmxremote.ssl=false 是否开启SSL

-Dcom.sun.management.jmxremote.authenticate=true 是否开启权限验证,如果开启需要有用户名和密码

-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password 指定用户名和密码的文件

-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access 指定用户的权限的文件

-Dcom.sun.management.jmxremote.rmi.port=8999 很重要,代表rmi启动的端口,如果不写rmi会随机启动一个端口

第二步 : 将文件复制到给定的目录下

  1. 首先将jdk下面的jre/lib/management/目录下的 jmxremote.access和jmxremote.password.template 复制到tomcat目录下的conf下

  2. 将jmxremote.password.template 文件名改成 jmxremote.password

  3. 编辑jmxremote.access,内容为:

    1
    2
    3
    4
    monitorRole   readonly
    controlRole readwrite \
    create javax.management.monitor.*,javax.management.timer.* \
    unregister

    可以看出有两个用户

    monitorRole readonly 代表只读,用这个用户连接看不到线程

    controlRole 代表可读可写,可以看到线程,可以进行抽样

  4. 编辑jmxremote.password,内容如下:

1
2
monitorRole  QED:
controlRole R&D:

可以看出由用户名密码组成,我们修改下密码:

1
2
monitorRole  aaaa
controlRole bbb
  1. 修改 jmxremote.password文件的权限,将文件权限改成600或者400(必须为此权限)
  2. 重启tomcat,至此服务端配置已经完成

客户端连接服务端

  1. 打开jvisualvm.exe

  2. 选择远程,右键添加远程主机

  3. 右键选中刚才添加的主机,选择添加JMX连接,输入刚才配置的端口以及用户名密码

  4. 右键选择刚才添加的JMX,打开

  5. 分析

评论