在 tomcat 8 运行 EC2 上使用 VisualVM

Using VisualVM on tomcat 8 running on EC2

我正在尝试在我的系统中使用 VisualVM 来监控 EC2 上的 Tomcat 实例 运行ning。我尝试了多个博客中提供的有关如何配置它的步骤,但是当我尝试 运行 tomcat 时仍然出现以下错误。

./catalina.sh: 5: /home/gvr/apache-tomcat-8.0.18/bin/setenv.sh: -Dcom.sun.management.jmxremote: not found

我在 server.xml

中添加了以下语句
<listener classname="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiregistryportplatform="10001"
rmiserverportplatform="10002"
uselocalports="true" /> 

而我的setenv.sh如下

CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=ec2-xx-xxx-xx-xx.ap-southeast-1.compute.amazonaws.com"
$CATALINA_OPTS

除此之外,我在 tomcat 的 lib 目录

中添加了 catalina-jmx-remote.jar

谁能给我一些提示,可能出了什么问题。我尝试了我发现的与配置 VisualVM

相关的所有内容

我 运行宁 Tomcat 8.0.18,java 8 超过 ubuntu

我认为有两个问题

  • 格式化setenv.sh,你需要\来跨行分割
  • 最后一行 $CATALINA_OPTS 试图执行参数,因此 -Dcom.sun.management.jmxremote 未找到...

建议的修复

CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=ec2-xx-xxx-xx-xx.ap-southeast-1.compute.amazonaws.com"
echo $CATALINA_OPTS

我也尝试过使用 JmxRemoteLifecycleListener,但它对我不起作用。

这是我的做法: 1) 我选择 1005 作为 jmx 端口,我的 setenve.sh 就像:

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10005 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote .authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Djava.rmi.server.hostname=localhost

2) 使用 ssh 重定向 jmx 端口和 rmi

3) 运行 visualvm 使用以下 uri: service:jmx:rmi:///jndi/rmi://localhost:10005/jmxrmi

如果您需要更多信息,请查看此 post: http://ignaciosuay.com/how-to-connect-a-java-profiler-like-visualvm-or-jconsole-to-a-remote-tomcat-running-on-amazon-ec2/