jvisualvm监控远程jvm

方式一:JMX

1、服务端添加配置
tomcat/bin/catalina.sh文件中添加如下配置:

export JAVA_OPTS="-Xms256m -Xmx512m -Xss256m -XX:PermSize=512m -XX:MaxPermSize=1024m -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.16.239 -Dcom.sun.management.jmxremote.port=9015 -Dcom.sun.management.jmxremote.rmi.port=9015 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

详解:
要使用jmx远程监控功能,在远程java application启动时,必须通过jvm选项配置提供远程服务的端口:
-Dcom.sun.management.jmxremote.port=9015

一般同时指定为本地jmx client提供服务的端口与远程服务端口相同:
-Dcom.sun.management.jmxremote.rmi.port=9015

jmx远程服务默认是开启ssl和认证功能功能的,也可以通过jvm选项把这两个功能关闭:
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

还可以设置虚拟机参数:
-Xms256m -Xmx512m -Xss256m -XX:PermSize=512m -XX:MaxPermSize=1024m

jmx默认是通过localhost的ip地址提供RMI服务的,如果要明确指定RMI服务地址或主机名(比如主机有多个接口,想使用非hostname关联的接口),可以通过以下选项显式指定:
-Djava.rmi.server.hostname=服务器IP

这样开启jmx远程监控功能的最小配置具体如下:

-Xms256m 
-Xmx512m 
-Xss256m 
-XX:PermSize=512m 
-XX:MaxPermSize=1024m 
-Dcom.sun.management.jmxremote 
-Djava.rmi.server.hostname=服务器IP 
-Dcom.sun.management.jmxremote.port=9015 
-Dcom.sun.management.jmxremote.rmi.port=9015 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

2. 重启tomcat
java application启动后,远程监控工具就可以通过<远程主机名或ip地址>:8777,或jmx服务地址service:jmx:rmi:///jndi/rmi://<远程主机名或ip地址>:8777/jmxrmi连接远程java application进行监控了
3. 客户端操作
3.1 启动jvisualvm.exe
找到jdk安装目录进入bin目录下, 双击 jvisualvm.exe
在这里插入图片描述
3.2 配置JMX
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

方式二:JSTATD

1、创建 XXX.policy文件
jdk 1.8发布包中包括一个jstatd程序,使用jstatd需要指定一个policy文件,文件的后缀为 .policy,
比如:jstatd-all.policy的文件,
内容为:

grant codebase "file:/usr/java/jdk1.8.0_212/lib/tools.jar" {
    permission java.security.AllPermission;
};

或者

grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
};

2、启动

./jstatd -J-Djava.security.policy=jstatd-all.policy &
或者指定端口
./jstatd -J-Djava.security.policy=jstatd-all.policy -p 9016 &

在这里插入图片描述

3. 客户端操作
3.1 启动jvisualvm.exe
找到jdk安装目录进入bin目录下, 双击 jvisualvm.exe
在这里插入图片描述
3.2 配置JMX
在这里插入图片描述
3.3 连接jstatd
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、区别和利弊

1、 jmx是jvm自身提供的一个标准的jmx管理功能,client支持度非常好,jvm监控工具基本上都会支持这种连接方式。而且只要配置几个简单的选项就可以使用了,不需要单独启动一个第三方的只用来监控连接的应用程序
2、jstatd是jdk提供的一个单独的工具,一个主机只需要运行一个jstatd就可以监控主机上所有的java application,而因为jmx是集成在jvm中,如果主机上有多个java应用程序需要监控,需要每个java应用程序配置相应的jmx选项,而且远程服务端口不能相同,client监控时也需要与每个java应用程序建立单独的连接
3、java应用程序启动时如果没有配置相应的jmx选项,则在运行周期内都无法远程监控应用程序,这可能会丧失定位问题的机会。而jstatd需要监控时,可以随时运行并进行监控在jvisualvm中,只有通过jstatd连接才能使用visualGC插件功能
4、jstatd server的端口是随机选择的,在有些情况下可能无法使用。比如我司的办公区域与生产区域之间网络设置了防火墙,只允许某个范围的端口通过,这是公司级的,某个团队无法修改防火墙策略。同时办公区域也不能直接ssh访问生产区域服务器,必须经过一个relay,也不能使用jstatd over ssh的方式。个人觉得jstatd不能在启动时显示指定服务的端口是它的一个槽点
5、jstatd不支持cpu监控

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值