0%

jstatd命令

使用的JDK版本为jdk1.7.0_79。

一、常用用法

1
jstatd [-n ServerId]

二、含义与选项

使用jps,jstat命令不仅可监控本地主机上的JVM进程,也可监控远端主机上的JVM进程,前者称为“本地模式”,后者称为“联网模式”。“联网模式”下的整个监控体系实质上是一个RMI应用程序。在“联网模式”下,一般情况下,远端主机上“运行rmiregistry服务,运行RMI Server”,本地主机上“运行RMI Client”,整个体系中“无需运行Web Server服务(因为所有相关类都可在本地获取)”。
在远端主机上,通过运行jstatd命令开启RMI Server(需要注意的是,运行jstatd命令同时会自动运行rmiregistry服务,而无需手动运行),使用“ServerId”选项值作为RMI Server内向rmiregistry服务注册所生成Remote Object实例的名称(如果未指定,则使用默认名称);在本地主机上,运行jps,jstat命令作为RMI Client。

三、具体使用

3.1、环境描述

远端主机内网IP地址为“10.110.20.100”,其上运行有两个JVM进程,JVM进程ID分别为“821”和“11220”。

3.2、实际运行

3.2.1、远端主机

在远端主机上,执行jstatd -J-Djava.security.policy=server.policy -n remoteObject1命令开启RMI Server(同时开启rmiregistry服务),并使用“remoteObject1”名称向rmiregistry服务注册所生成的Remote Object实例,通过“-J-Djava.security.policy”选项指定安全访问策略文件(可参见《RMI》),在这里“server.policy”文件内容被简单编辑为:

1
2
3
grant {
permission java.security.AllPermission;
};

假设运行jstatd命令得到的JVM进程ID为“2891”,执行netstat -anp | grep '2891'命令,可得到如下结果:

1
2
tcp        0      0 :::1099                     :::*                        LISTEN      2891/jstatd         
tcp 0 0 :::57818 :::* LISTEN 2891/jstatd

以上结果证明,运行jstatd命令得到的JVM进程开启了rmiregistry服务(rmiregistry服务默认监听1099端口)和RMI Server(57818作为Remote Object实例绑定到的端口)。

3.2.2、本地主机

3.2.2.1、jps命令

在本地主机上,执行jps rmi://10.110.20.100/remoteObject1命令作为RMI Client与远端主机上的rmiregistry服务和RMI Server进行交互,列出在远端主机运行的有权限进行访问的JVM进程的状态信息。执行jps命令时可使用的选项参数可具体参考该命令的“本地模式”用法。
执行以上命令,得到最终结果如下:

1
2
3
821 Agent
2891 Jstatd
11220 Agent
3.2.2.2、jstat命令

在本地主机上,执行jstat rmi://11220@10.110.20.100/remoteObject1命令作为RMI Client与远端主机上的rmiregistry服务和RMI Server进行交互,而达到监控远端主机上相应JVM进程的目标。执行jstat命令时可使用的选项参数可具体参考该命令的“本地模式”用法。
执行jstat -gcutil rmi://11220@10.110.20.100/remoteObject1 1000 3命令,得到最终结果如下:

1
2
3
4
S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
0.00 92.20 62.48 55.51 21.58 35 11.899 0 0.000 11.899
0.00 92.20 62.96 55.51 21.58 35 11.899 0 0.000 11.899
0.00 92.20 65.31 55.51 21.58 35 11.899 0 0.000 11.899

参考文献: [1]http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstatd.html [2]man jstatd
您的支持将鼓励我继续分享!