相关疑难解决方法(0)

如何使用JMX连接到在EC2上运行的Java实例

我们在连接到在Amazon的EC2集群中运行的Java应用程序时遇到问题.我们肯定允许"JMX端口"(通常是RMI注册表端口)服务器端口(完成大部分工作)到相关实例的安全组.Jconsole连接但似乎挂起并且从不显示任何信息.

我们正在运行我们的java,如下所示:

java -server -jar foo.jar other parameters here > java.log 2>&1
Run Code Online (Sandbox Code Playgroud)

我们尝试过:

  • Telnet到端口连接但不显示任何信息.
  • 我们可以jconsole在ssh上使用remote-X11在实例上运行,它可以连接并显示信息.因此JRE 本地出口的.
  • 打开安全组中的所有端口.Weeee.
  • 使用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)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我们使用的是我的简单的JMX包,它允许我们设置两个 RMI注册表和服务器端口,一般是通过RMI注册表半随机选择的.您还可以使用以下JMX URI强制执行此操作:

service:jmx:rmi://localhost:" + serverPort + "/jndi/rmi://:" + registryPort + "/jmxrmi"
Run Code Online (Sandbox Code Playgroud)

这些天我们为服务器和注册表使用相同的端口.在过去,我们使用X注册表端口和X+1服务器端口来简化安全组规则.您连接到注册表端口jconsole或您正在使用的任何JMX客户端.

java jmx jconsole amazon-ec2

25
推荐指数
3
解决办法
2万
查看次数

如何从EC2上的Spark Streaming向VisualVM报告JMX?

我一直在尝试获取Spark Streaming作业,在EC2实例上运行以使用JMX向VisualVM报告.

截至目前,我有以下配置文件:

火花/ conf目录/ metrics.properties:

*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
master.source.jvm.class=org.apache.spark.metrics.source.JvmSource

worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource

driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource

executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource
Run Code Online (Sandbox Code Playgroud)

我开始像这样的火花流工作:(之后添加的-D位希望远程访问ec2的jmx)

终端:

spark/bin/spark-submit --class my.class.StarterApp --master local --deploy-mode client \
  project-1.0-SNAPSHOT.jar \
    -Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=54321 \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.ssl=false
Run Code Online (Sandbox Code Playgroud)

jmx visualvm amazon-ec2 apache-spark spark-streaming

5
推荐指数
1
解决办法
2867
查看次数