文档

本地使用jconsole或jvisualvm监控ECS实例上的JVM进程

更新时间:

EDAS为ECS集群和Swarm集群中部署的应用提供应用诊断功能,以此监控各应用使用的Java虚拟机的堆内存、线程、MBean。此外,您还可以使用JDK自带的jconsole或者jvisualvm实现该目的。本文介绍如何使用jconsole或jvisualvm监控ECS实例上的JVM进程。

说明
  • jconsole和jvisualvm小程序默认位于$JAVA_HOME/bin目录下,jvisualvm也可以使用开源版。

  • 该方法适用于在本地(办公电脑环境)通过jconsole或者jvisualvm远程获取运行在ECS实例上的JVM进程的配置与运行时信息(创建ECS实例时,需为实例分配公网IPv4地址)。

配置JVM参数

  1. 登录EDAS控制台

  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。

  3. 在应用详情基本信息页面的应用设置区域,单击JVM参数右侧的编辑

  4. 应用设置对话框的自定义区域,设置自定义参数,然后单击配置JVM参数

    应用设置JVM页签
    -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=一个1024以上的端口 -Dcom.sun.management.jmxremote.rmi.port=同com.sun.management.jmxremote.port属性设置的端口 -Djava.rmi.server.hostname=ECS 实例的公网IP地址
  5. 设置完成后,返回应用详情页面,在基本信息页面的应用设置区域可以看到配置的JVM参数。

  6. 重启应用,使配置的参数生效。

在ECS实例上查看JVM进程是否开启JMX Remote端口

  1. 登录EDAS控制台

  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。

  3. 在应用详情实例部署信息页面查看ECS实例的IP地址。

  4. 使用SSH工具登录ECS实例,执行以下命令,查看应用JVM进程是否开启JMX Remote端口。

    [admin@izbp146****ubo8si0ihkz ~]$ netstat -antp | grep 10000
                            (Not all processes could be identified, non-owned process info
                            will not be shown, you would have to be root to see it all.)
                            tcp    0     0 0.0.0.0:10000      0.0.0.0:*      LISTEN     6457/java

    如果JMX Remote端口未打开,请检查JVM进程命令行是否包含配置JVM参数章节配置的JVM属性参数。

    正常开启JMX Remote端口的JVM进程示例如下:

    [admin@izbp146****ubo8si0ihkz ~]$ ps -ef|grep tomcat | grep -v grep
                            admin     6457     1  1 15:46 ?        00:03:18 //bin/java -Djava.util.logging.config.file=/home/admin/taobao-tomcat-production-7.0.59.3/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dcatalina.vendor=alibaba -Djava.security.egd=file:/dev/./urandom -Dlog4j.defaultInitOverride=true -Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_EQUALS_IN_VALUE=true -Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0=true -Dproject.name=b1c8a3ea-309b-43e8-b716-f52008784801 -Dtenant.id=e19f8e62-84db-4ff3-aae6-b5750a6a248a -Dalicloud.deployment.mode=EDAS_MANAGED -Dpandora.accept.foreign.ip=false -Dlog4j.defaultInitOverride=false -Dspas.identity=/home/admin/.spas_key/default -Daddress.server.domain=addr-hz-internal.edas.aliyun.com -Daddress.server.port=8080 -Dconfigserver.client.port=8000 -DJM.LOG.RETAIN.COUNT=7 -DJM.LOG.FILE.SIZE=300MB -Dtomcat.monitor.http.binding.host=172.16.129.92 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=10000 -Dcom.sun.management.jmxremote.rmi.port=10000 -Djava.rmi.server.hostname=47.98.XX.XXX -Dcatalina.logs=/home/admin/taobao-tomcat-production-7.0.59.3/logs -Dignore.endorsed.dirs= -classpath /home/admin/taobao-tomcat-production-7.0.59.3/bin/bootstrap.jar:/home/admin/taobao-tomcat-production-7.0.59.3/bin/tomcat-juli.jar -Dcatalina.base=/home/admin/taobao-tomcat-production-7.0.59.3 -Dcatalina.home=/home/admin/taobao-tomcat-production-7.0.59.3 -Djava.io.tmpdir=/home/admin/taobao-tomcat-production-7.0.59.3/temp org.apache.catalina.startup.Bootstrap start
  5. 在应用详情的实例部署信息页签,单击具体实例ID/名称

  6. 在云服务器ECS控制台的实例详情页面,单击安全组页签。

  7. 安全组列表页签,单击目标安全组操作列的配置规则,添加JMX Port的安全组规则。

  8. 在本地打开jconsole或者jvisualvm,添加该远程ECS实例上JVM的JMX监控。 下面以jvisualvm为例进行配置说明。

    说明

    本文中的配置仅为测试样例,未开启身份安全验证,如需在正式环境使用,请开启安全验证。由于jconsole、jvisualvm是JDK提供的监控工具,与EDAS产品并无关系。更多配置,请参见jconsolejvisualvm

    1. 添加JMX连接。

      添加JMX连接
    2. 配置远程JMX连接。

      添加JMX连接对话框
    3. 查看远程JVM连接监控。

      查看远程JVM监控

  • 本页导读 (1)
文档反馈