如何使用 jps+jstatd 访问远程服务器上的jvm进程

1. 问题来源

jps 可以打印出所有的 JVM 进程,也可以通过jps hostid访问远程节点上的 JVM进程,但需要远程节点注册相关的服务,并且开放相关端口才允许其他节点访问

2. jstatd 简介

jstatd工具是一个RMI服务器应用程序,主要用于监控HotSpot Java 虚拟机的创建与终止,并提供一个接口以允许远程监控工具附加到本地主机上运行的JVM上。

jstatd服务器需要在本地主机上存在一个RMI注册表。jstatd服务器将尝试在默认端口或-p port选项指定的端口附加到该RMI注册表上。如果RMI注册表不存在,jstatd应用程序将会自动创建一个,并绑定到-p port选项指定的端口上,如果省略了-p port选项,则绑定到默认的RMI注册表端口。你可以通过指定-nr选项来抑制内部RMI注册表的创建。

3. 创建 jstatd.all.policy 文件

grant codebase "file:/usr/lib/jvm/java-8-oracle/lib/tools.jar"{
    permission java.security.AllPermission;
};

其中file: 后面是 安装的 jdk 所在路径

4. 修改服务器 hosts 文件中的 IP 地址

服务器端应该在 /etc/hosts 文件中把本机地址设为本机的 IP 地址。使用 hostname -i 命令查看,如果显示的是 127.0.0.1 或者与本机实际 IP 不一致的话,需要把 /etc/hosts 文件中相应的地址改为本机实际 IP 。

例如输入

$hostname -i
127.0.1.1

你可能感兴趣的:(JVM)