JVM远程监控工具-jstatd

1. jstatd功能

在远程服务端启动一个RMI server,允许本地通过jpsjstat命令行工具及jvisualvm可视化工具监控远程服务器的Java进程。

1.1 命令参数

参数名介绍
-nr默认情况下如果没有发现RMI registry(注册中心),会在jstatd进程中创建一个,加-nr后会阻止其创建
-p指定RMI registry端口,默认1099
-n指定RMI server注册到RMI registry的名称,通过名称区分不同的RMI server,默认JStatRemoteHost
-Joption由于jstatd也是java进程,可以通过此参数指定该进程的启动参数,例如-J-Xms48m设置启动时内存为48m

2. 实战

2.1 目标和环境简介

  • 本机环境简介
    Win10,192.168.1.1oracleJdk 1.8.0_201
  • 服务器环境简介
    Centos 7.6,192.168.1.14openJdk 1.8.0_232,运行着1个tomcat,进程id7394
  • 目标
    从本机1.1远程监控运行在服务器1.14上的Tomcat进程7394

2.2 服务器启动jstatd

2.2.1 创建策略文件

/root目录下创建策略文件jstatd.all.policy,内容如下

  • JDK8版本
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};
  • JDK11版本
grant codebase "jrt:/jdk.jstatd" {
   permission java.security.AllPermission;
};

grant codebase "jrt:/jdk.internal.jvmstat" {
   permission java.security.AllPermission;
};
2.2.2 启动jstatd

-J-Djava.security.policy指定策略文件
-J-Djava.rmi.server.logCalls开启调用日志
-J-Djava.rmi.server.hostname指定server的ip,避免hostname -i 为127.0.0.1时调用异常

jstatd -J-Djava.security.policy=/root/jstatd.all.policy -J-Djava.rmi.server.logCalls=true -J-Djava.rmi.server.hostname=192.168.1.14

启动日志

一月 27, 2020 9:34:03 下午 sun.rmi.server.UnicastServerRef logCall
较详细: RMI TCP Connection(1)-127.0.0.1: [127.0.0.1: sun.rmi.registry.RegistryImpl[0:0:0, 0]: void rebind(java.lang.String, java.rmi.Remote)]
一月 27, 2020 9:34:03 下午 sun.rmi.server.UnicastServerRef logCall
较详细: RMI TCP Connection(2)-192.168.1.14: [192.168.1.14: sun.rmi.transport.DGCImpl[0:0:0, 2]: java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)]

2.3 本地监控

此小结在本地192.168.1.1上执行

2.3.1 jps

协议可以省略,默认rmi,当端口为1099时,端口也可以省略。关于jps使用详情可以参考:JVM监控工具-jps

# 通过jps命令查询服务器上的Java进程,发现能够显示Tomcat进程7394 
C:\Users\mi>jps -l rmi://192.168.1.14:1099
7537 -- process information unavailable
7394 org.apache.catalina.startup.Bootstrap
2.3.2 jstat

关于jstat使用详情可以参考:JVM监控工具-jstat

# 使用jstat工具查看远程服务器上tomcat进程7394的gc信息
C:\Users\mi>jstat -gcutil 7394@192.168.1.14 1s 5
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  0.00 100.00   2.56  56.63  96.74  89.58      5    0.060     0    0.000    0.060
  0.00 100.00   2.56  56.63  96.74  89.58      5    0.060     0    0.000    0.060
  0.00 100.00   2.56  56.63  96.74  89.58      5    0.060     0    0.000    0.060
  0.00 100.00   2.56  56.63  96.74  89.58      5    0.060     0    0.000    0.060
  0.00 100.00   2.56  56.63  96.74  89.58      5    0.060     0    0.000    0.060
2.3.3 jvisualvm

双击%JAVA_HOME%\bin\jvisualvm.exe启动jvisualvm,选择远程,然后点击右键添加远程主机,然后输入服务器IP地址,点击高级设置

在这里插入图片描述
在高级设置中你会发现有个jstatd连接,我们可以在这里选择端口和刷新时间,此处我将刷新时间设置为1秒,然后点击确定
在这里插入图片描述
点击确定后,在对应服务器192.168.1.14下面出现两个java进程,一个是jstatd,一个是tomcat,我们可以双击tomcat的进程进行信息查看
在这里插入图片描述
信息截图:
在这里插入图片描述
在这里插入图片描述

3. RMI简介

https://www.tutorialspoint.com/java_rmi/java_rmi_introduction.htm
在这里插入图片描述
这个模型与当前流行的微服务架构如出一辙。

RMI概念RMI实现微服务概念实现
RMI serverjstatd生产者服务提供方
RMI clientjps、jstat、jvisualvm消费者服务调用方
RMI registryrmiregistry注册中心zk 、eureka、nacos

执行大体流程为:RMI server向RMI registry注册自己,然后RMI client从RMI registry请求到RMI server的相关信息,然后直接调用RMI server。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值