zoukankan      html  css  js  c++  java
  • jvisualvm工具

    jvisualvm是SUN/Oracle JDK自带的JVM运行状态监测工具,能够获取JVM运行状态的各种信息,包括Thread Dump和Heap Dump,在可以使用的情况下建议使用此工具监测JVM运行状态。

    连接远程JVM

    jvisualvm只能远程连接启用了JMX远程监测的JVM,JVM启动时需要设置一些系统属性来启用JMX远程监测。

    JVM中JMX相关的配置文件及说明位于固定位置,一般位于“JDK/ jre/lib/management”,其中有JMX配置的模板文件。因为一般JDK在服务器上是公用的,因此不应该直接在此位置更改JMX配置,而应该复制其中的文件后更改,并在JVM的启动参数中指定使用更改后的文件。

    在JVM启动参数中指定JMX配置文件的方式为:-Dcom.sun.management.config.file=<somewhere>.management.properties,JMX的配置信息在此文件中设置,下面描述JMX配置文件中的典型配置。

    • 无认证方式

    启用JMX并且不进行认证,此时任何JMX客户端都可以远程连接到此JVM进行远程监测,因此安全性很差,但在开发调试和测试环境中较为方便。在JVM启动参数中设置“-Dcom.sun.management.config.file=C:JMXRemotejava.noauth.management.properties”,同时在JMX配置文件(C:JMXRemotejava.noauth.management.properties)中设置下面的值:

    #设置JMX端口号,JMX客户端连接时使用此端口

    com.sun.management.jmxremote.port=9999

    #设置JMX不使用SSL连接

    com.sun.management.jmxremote.ssl=false

    #设置JMX客户端连接本JVM时无需身份认证

    com.sun.management.jmxremote.authenticate=false

    上述设置后启动JVM,则任何JMX客户端均可以连接此JVM并进行JVM运行状态监测。

    • 认证方式

    启用JMX且需要身份认证,只有认证通过的JMX客户端才能够连接到此JVM进行监测。在JVM启动参数中设置“-Dcom.sun.management.config.file=C:TEMPJMXRemoteauthmanagement.properties”,并在此文件中设置下列值:

    #设置JMX端口号,JMX客户端连接时使用此端口

    com.sun.management.jmxremote.port=9999

    #设置JMX不使用SSL连接

    com.sun.management.jmxremote.ssl=false

    #设置JMX客户端连接本JVM时需要身份认证

    com.sun.management.jmxremote.authenticate=true

    #设置身份认证文件地址

    com.sun.management.jmxremote.password.file=C:/TEMP/JMXRemote/auth/jmxremote.password

    #设置角色文件地址

    com.sun.management.jmxremote.access.file=C:/TEMP/JMXRemote/auth/jmxremote.access

    注意:access和password文件必须正确设置才能生效,建议只改动password文件中的口令以避免其他错误。而且jmxremote.password文件必须正确设定其在文件系统中的权限,否则JVM无法启动,通常需要设置为此文件只有所有者能够访问。如果需要设置JMX Server的监听地址,可以设置下列参数:

    -Djava.rmi.server.hostname=x.x.x.x"

    上述设置后启动JVM,则任何JMX客户端均可以连接此JVM并进行JVM运行状态监测。

    当设置了JMX远程监测后启动JVM(如启动Tomcat)后,可以在其他机器上用jvisualvm远程监测此JVM(如Tomcat),过程如下:

    启动jvisualvm,增加远程主机(即配置了JMX的JVM所在的主机),如下图:

    image

    输入远程主机地址,如下图:

    image

    确定后,增加JMX连接,如下图:

    image

    输入JMX连接信息,JMX端口信息即是com.sun.management.jmxremote.port=9999中设定的端口号,如下图:

    image

    确定后,如果JMX配置为无认证需求,则连接完成;否则将要求输入JMX连接用户名和口令,即在文件com.sun.management.jmxremote.password.file=<password_file>中设置的用户名和口令。如下图:

    image

    用户名和口令验证成功后连接完成,如下图:

    image

    获取Thread Dump

    直接在jvisualvm中获取Thread Dump,如下图:

    image

    Thread Dump的结果如下图:

    image

    在其中进行Thread Dump分析即可。

    获取Heap Dump

    直接在jvisualvm中获取Heap Dump,如下图:

    image

    执行Heap Dump后将提示Heap Dump创建位置,如下图:

    image

    确定后将创建Heap Dump文件,之后在MAT中分析此文件即可。

  • 相关阅读:
    [Apache commons系列]DBUtils 示例代码
    关于syslog
    Phoenix Tips (1)
    Phoenix 常用函数
    Phoenix 的数据类型
    最简单的Phoenix 访问 HBase例子
    SVNKIT 主要方法
    Linux 集群时钟同步
    Linux 集群时钟同步
    Linux 下定时提交SVN
  • 原文地址:https://www.cnblogs.com/xiongmaotailang/p/5249651.html
Copyright © 2011-2022 走看看