bean 设置为 net.lag.kestrel:name=queues.weather_updates,type=Config

bean 设置为 net.lag.kestrel:name=queues.weather_updates,type=Config

我尝试配置 JVM 进行远程监控,但在服务器上出现以下错误

The configuration has not been set for this resource due to : Invalid configuration: Error contacting resource: Can't connect to MBeanServer [{jmx.username=system, jmx.url=service:jmx:rmi:///jndi/rmi://localhost:6969/jmxrmi}]: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: localhost; nested exception is: java.net.ConnectException: Connection refused]

我想监控 tomcat 服务器,根据文档我在 /tomcat/bin/catalina.sh 文件中添加了远程监控 Mbean 服务器连接字符串

[ $1 != "stop" ] && JAVA_OPTS="-Dcom.sun.management.jmxremote \ 
-Dcom.sun.management.jmxremote.port=6969 \ 
-Dcom.sun.management.jmxremote.ssl=false \ 
-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS" 
export JAVA_OPTS

之后我重启了 tomcat 服务。但是没有看到服务器上监听的端口 6969。重启 tomcat 后我通过“netstat -an | grep 696”检查了它,我认为这就是问题所在。这台机器上没有使用端口 6969。

答案1

你说你正在尝试连接到远程 jmx。那么如何

mx.url=服务:jmx:rmi:///jndi/rmi://localhost:6969/jmxrmi

机器上的 localhost 可以工作吗?我认为你应该使用远程机器的 IP,而不是 localhost。

答案2

嗯,看起来 100% 正确。以下是我在 Windows 环境中使用的内容:

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=9988
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false

我认为有两个因素可能存在问题: 格式。我看到你放了:

JAVA_OPTS="-Dcom.sun.ma...

尝试为第一个元素添加一个“空格”,就像我在配置中所做的那样。您还可以在生成 $JAVA_OPST 变量后使用 echo,并检查语法是否正确。

另一个是 JVM 版本。¿1.5?¿1.6?¿JRE?¿JDK? 如果您的安装出现问题,请尝试使用最新版本(或至少 1.6)。

答案3

最后我让它工作了。我在 tomcat 启动脚本中的 JAVA_OPTS 变量中添加了以下设置:

JAVA_OPTS="-Djava.awt.headless=true -Xms256m -Xmx1024m -XX:PermSize=512m -server -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

答案4

1)从以下网址下载 jmxterm: http://wiki.cyclopsgroup.org/jmxterm:download 2)将下载的jar文件复制到测试服务器

3)ssh 到测试服务器

4)在测试服务器上启动JMX shell:

$ java -jar jmxterm-1.0-alpha-4-uber.jar -l 本地主机:20051

(注意:端口 20051 是您的服务器用于 JMX 的端口。我查看了您的一台服务器的数据,并在 java 命令行上看到以下内容:-Dcom.sun.management.jmxremote.port=20051。如果测试服务器使用不同的 java 命令行,则需要找到相同的选项和端口号(如果不同))

5)测试外壳是否连接正确:

$>打开

你会得到类似这样的结果:

rmi://127.0.1.1 4,服务:jmx:rmi:///jndi/rmi://localhost:3333/jmxrmi

6) 列出可用的 Mbean,复制粘贴输出并发送给我。我们将审查哪些可用以及哪些需要。

$>豆类

7)检查给定 bean 的可用属性:

$>bean name_of_object from_output_above(例如.net.lag.kestrel:name=queues.weather_updates,type=Config)

bean 设置为 net.lag.kestrel:name=queues.weather_updates,type=Config

$>信息

mbean = net.lag.kestrel:名称=queues.weather_updates,类型=配置

类名 = net.lag.configgy.ConfigMap

属性

%0-max_age(java.lang.String,rw)

%1-max_items(java.lang.String,rw)

运营

%0-void add_list(java.lang.String键,java.lang.String值)

%1-void删除(java.lang.String key)

相关内容