我目前一直在尝试将 VisualVM(一个监控 JVM、堆和内存使用等的程序)连接到在 Docker 容器中的 AWS Fargate 上运行的 Spring Boot 应用程序(Java 应用程序)。
我已经相应地公开了 JMX 端口,并且在本地运行 Docker 容器时能够通过 JMX 端口进行连接。但是,在 Fargate 上运行 Java App 时,我还没有找到通过 JMX 连接到 Container 的方法。我试过设置 VM 参数
-Djava.rmi.server.hostname 到容器的 IP 地址,但是当我尝试通过 JMX 连接时,它仍然无法连接。有没有人有这方面的经验?
JMX 命令供引用:
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.17.0.2 \
-Dcom.sun.management.jmxremote.port=9090\
-Dcom.sun.management.jmxremote.rmi.port=9090\
-jar java-api.jar server```
最佳答案
在将 Visual VM 连接到部署在 AWS Fargate(私有(private) VPC)中的 Spring Boot 应用程序方面,以下更改对我有用
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.rmi.port=1099 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.local.only=false \
-Djava.rmi.server.hostname=127.0.0.1
在本地运行以下命令
ssh -l <user> -L 127.0.0.1:1099:<task-private-ip-in-fargate>:1099 <ec2-ip(jump server)>
关于java - 在 AWS Fargate 中监控 JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299557/