使用visualvm远程监控LINUX服务器JVM

Posted CHENV

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用visualvm远程监控LINUX服务器JVM相关的知识,希望对你有一定的参考价值。

使用visualvm远程监控LINUX服务器JVM

一、JMX方式:

1. 首先要修改JDK中JMX服务的配置文件,以获得相应的权限:

进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下,
a. 将jmxremote.password.template文件复制为jmxremote.password
b. 调整jmxremote.access和jmxremote.password的权限为只读写,可以使用如下命令
chmod 600 jmxremote.access jmxremote.password
c. 打开jmxremote.password文件,去掉

# monitorRole QED 
# controlRole R&D

这两行前面的注释符号

2. 启动参数

在需要监听的程序上启动参数带上以下参数

-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=[hostIp]

-Dcom.sun.management.jmxremote.port:这个是配置远程connection的端口号的,要确定这个端口没有被占用  
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:这两个是固定配置,是JMX的远程服务权限的  
-Djava.rmi.server.hostname:这个是配置server的IP的,要使用server的IP最好在机器上先用hostname   –i看一下IP是不是机器本身的IP,如果是127.0.0.1的话要改一下,否则远程的时候连不上,目前我们的server上我已经都改好了  
3. Windows客户端配置

JDK自带visualvm,只需要进到bin目录下启动即可
启动后页面比较简洁,配置也很简单:

a. 点击左侧菜单的add Remote host,输入server的IP,然后再advanced settings里配置端口(注意这个端口要和server上的端口一致)

b. 右击刚才配置的IP,选择JMX connection方式,再次输入端口,就可以监视到JVM资源了

二、 Jstatd方式:

1. 在服务器上的java安装的bin下(如/usr/local/java/jdk1.8.0_91/bin)新建一个文件

文件名为jstatd.all.policy
文件内容如下

grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
2. 在当前目录中(bin)执行如下命令
./jstatd -J-Djava.rmi.server.hostname=[hostIp] -J-Djava.security.policy=jstatd.all.policy -p 1100

命令中的hostname是服务器的IP地址,-p是端口,这两项需要自己指定(网上使用默认IP地址和端口的命令,但我尝试了无法生效)。如果不指定端口。那么端口的默认值为1099。执行完毕后,使用telnet命令测试端口是否被监听。 如果一切正常, 说明jstatd服务已经配置成功了。

3. Windows客户端配置

在电脑上打开visual vm软件,右击左侧菜单中的「远程」菜单项,输入目标服务器IP地址添加一个远程主机。 然后再右击新加的主机菜单项, 在弹出的菜单中选择「添加jstatd连接」。 在弹出的对话框中的文本框中输入在第二步配置中指定的端口号(默认是1099)

注意: JMX方式启动不能使用Visual GC插件,jstatd方式可以使用但CPU视图不可以使用,因此可以结合两者一起使用,首先启用jstatd使用端口1099,再在需要监听的应用上启用JMX使用另外的端口

以上是关于使用visualvm远程监控LINUX服务器JVM的主要内容,如果未能解决你的问题,请参考以下文章

visualVM远程监控JVM

VisualVM使用Jstatd远程监控服务器

visualvm监控jvm及远程jvm监控方法

使用Java visualVM监控远程JVM

使用Java VisualVM监控远程JVM cpu jps

利用VisualVM监视远程JVM