【发布时间】:2012-11-23 22:51:42
【问题描述】:
我们在连接到在 Amazon 的 EC2 集群中运行的 Java 应用程序时遇到问题。我们肯定已经允许“JMX 端口”(通常是 RMI 注册表端口)和服务器端口(完成大部分工作)到相关实例的安全组。 Jconsole 连接但似乎挂起并且从不显示任何信息。
我们正在运行我们的 java,如下所示:
java -server -jar foo.jar other parameters here > java.log 2>&1
我们已经尝试过:
- Telnet 到端口连接,但没有显示任何信息。
- 我们可以通过 ssh 使用 remote-X11 在实例本身上运行
jconsole,它会连接并显示信息。所以 JRE 正在在本地导出它。 - 打开安全组中的所有端口。哎呀。
- 使用
tcpdump确保流量不会流向其他端口。 - 在本地模拟它。我们始终可以使用相同的应用程序参数连接到本地 JRE 或网络上其他地方运行的 JRE。
java -version 输出:
OpenJDK Runtime Environment (IcedTea6 1.11.5) (amazon-53.1.11.5.47.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
顺便说一句,我们正在使用我的Simple JMX 包,它允许我们设置两个 RMI 注册表和服务器端口,这些端口通常由 RMI 注册表半随机选择。您还可以使用以下 JMX URI 强制执行此操作:
service:jmx:rmi://localhost:" + serverPort + "/jndi/rmi://:" + registryPort + "/jmxrmi"
如今,我们为服务器和注册表使用相同的端口。过去我们使用X 作为注册端口,X+1 作为服务器端口,以简化安全组规则。您连接到jconsole 中的注册表端口或您正在使用的任何 JMX 客户端。
【问题讨论】:
标签: java amazon-ec2 jmx jconsole