首页 > 解决方案 > 为什么在visualvm中无法连接到远程服务器上的jstatd

问题描述

在服务器端,我添加了一个jstatd.policy文件:

grant codebase "jrt:/jdk.jstatd" {
   permission java.security.AllPermission;
};

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

并像这样启动 jstatd:

nohup /usr/local/jdk/bin/jstatd -J-Djava.security.policy=./jstatd.policy -J-Djava.rmi.server.hostname=0.0.0.0 &

然后我将端口映射添加到远程服务器,当我在本地机器上使用visualVM连接到远程服务器时,UI中没有java进程,也没有错误输出。那么问题出在哪里?我应该怎么做才能连接到远程服务器并监控java进程?这是我的java信息:

[root@izbp19pke6x0v6ruecuy1yz dolphin-post]# java -version
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.8+10, mixed mode)

我正在使用此命令检查端口:

[root@izbp19pke6x0v6ruecuy1yz ~]# lsof -i:1099
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
jstatd  25772 root    9u  IPv4 172005438      0t0  TCP *:rmiregistry (LISTEN)

并扫描我本地机器上的端口:

    $ nmap -p 1099 12.96.19.23                                                                                                              ‹ruby-2.7.2›
Starting Nmap 7.80 ( https://nmap.org ) at 2021-07-02 22:12 CST
Nmap scan report for postgres.dolphin.com (12.96.19.23)
Host is up (0.021s latency).

PORT     STATE SERVICE
1099/tcp open  rmiregistry

Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

似乎端口没有映射到互联网,但我确定我已经配置了防火墙以打开端口。

标签: java

解决方案


推荐阅读