gpt4 book ai didi

java - 我还需要在服务器上配置 jconsole 吗

转载 作者:行者123 更新时间:2023-11-30 04:23:42 25 4
gpt4 key购买 nike

我想将 jmx 与 Jconsole 一起使用。这是 .sh 文件中的相关行

## enable jconsole access
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.password.file=/usr/pkg/tomcat-rusznak/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/usr/pkg/tomcat-rusznak/jmxremote.access -Djava.rmi.server.hostname=ba.accra.com"

这是 jmxremote.password 文件的内容

monitorRole password
controlRole password

这是 jmxremote.access 文件的内容

monitorRole   readonly
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister

但是当我提供正确的主机名、端口并尝试使用 MonitorRole - 密码对登录时,我得到的结果是:

Connection failed: connection refused.

为什么?

我检查了很多类似的问题,例如我从stackoverflow知道我也需要包含主机名(-Djava.rmi.server.hostname=ba.accra.com),但这并不能解决问题,显然缺少一些东西。我还需要什么?

已编辑

我不知道它是否相关,但我想补充一点,我在本地启动 jconsole 没有问题(尽管连接总是被拒绝),但我什至无法启动它服务器!

jconsole: not found

最佳答案

我有一个解决方案:

另请参阅:https://stackoverflow.com/a/17457394/1531271

如果您的Java 进程在防火墙后面的 Linux 上运行,并且您希望在本地计算机上的 Windows 上启动 Jconsole。

注意:如果您没有 putty.exe(如果您是 Linux 或 mac os 用户),您也可以使用 ssh 命令添加隧道


1。您需要从此处获取适合您的 Windows 计算机的 putty 套件:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

At least the putty.exe


2。首先检查linux机器上的ip地址

hostname -i

result ---> <your-linux-ip-adress>

示例:

your-linux-ip-adress = 10.20.30.40


3。在您的 Linux 机器上定义两个空闲端口:

<jmx-remote-port>
<jndi-remote-port>

示例:

jmx-remote-port = 15666      
jndi-remote-port = 15667


4。向 Linux 机器上的 java 进程添加参数

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<jmx-remote-port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=<your-linux-ip-adress>
-Djava.rmi.activation.port=<jndi-remote-port>

示例:

java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=15666 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=10.20.30.40 -Djava.rmi.activation.port=15667 ch.sushicutta.jmxremote.Main


5。使用 putty 从 Windows 计算机启用两个 SSH 隧道

Source port: <jmx-remote-port>
Destination: <your-linux-ip-adress>:<jmx-remote-port>
[x] Local
[x] Auto

Source port: <jndi-remote-port>
Destination: <your-linux-ip-adress>:<jndi-remote-port>
[x] Local
[x] Auto

示例:

Source port: 15666
Destination: 10.20.30.40:15666
[x] Local
[x] Auto

Source port: 15667
Destination: 10.20.30.40:15667
[x] Local
[x] Auto


6。登录到启用此 SSH 隧道的 Linux 计算机。

当您登录时,Putty 会将所有 TCP 连接通过隧道传输至

localhost:15666 and localhost:15667

10.20.30.40:15666 and 10.20.30.40:15667


7。启动 JConsole 并使用以下 URL 连接到您的 Java 进程

[x] Remote Process:
service:jmx:rmi://localhost:**<jndi-remote-port>**/jndi/rmi://localhost:<jmx-remote-port>/jmxrmi

示例:

[x] Remote Process:
service:jmx:rmi://localhost:15667/jndi/rmi://localhost:15666/jmxrmi


8。享受:)

关于java - 我还需要在服务器上配置 jconsole 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16398300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com