• jconsole监控tomcat


    一、专业术语

        GC垃圾回收机制:当需要分配的内存空间不再使用的时候,JVM将调用垃圾回收机制来回收内存空间。

        JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

        JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

        JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM。
     

    二、操作步骤

    1.在tomcat目录下,bin/catalina.sh文件中,添加如下java opt内容:

    1) 如果是无须验证添加

    JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.1.122

    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote

    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

     

    如无须验证,服务就设置完成了。

     

    2) 如需密码验证

    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/usr/java/jdk1.7.0_45/jre/lib/management/jmxremote.password"

     

    2.将/usr/java/jdk1.7.0_45/jre/lib/management下的jmxremote.password.template,拷贝一份叫jmxremote.password。进去将内容全部删去,添加一行

    controlRole   R&D    (用户名,密码)

     

    3.将jmxremote.passwordjmxremote.access改成600权限

    chmod 600 jmxremote.access  jmxremote.password

     

    之后在jdk安装目录bin下JConsole里添加用户名,密码就可以了。


     

    注:如果JConsole不能访问本机的程序的话,在java opt里添加如下内容:

    -Dcom.sun.management.jmxremote

     

    三、具体介绍

    下面说说如何分析,如何使用这六个标签

    · 概览:显示JVM和被监视值的汇总信息 

    · 内存:显示内存使用信息

    · 线程:显示线程使用信息

    · 类:显示类装载信息

    · VM摘要:显示java VM信息

    · MBeans:显示 MBeans信息

     

    概览:


     

     

    注:对着图点击右键可以保存数据到CSV文件,以后可以使用其他工具来分析这些数据。

     

     

    内存:


     

    这里可以参看堆内存,非堆内存,内存池的状况总体内存的分配和使用情况以及不同的GC进行垃圾回收的次数和时间。可以手动进行GC查看内存变化。

     

    线程:


     

    左下角显示所有的活动线程(如果线程过多,可以在下面的过滤栏中输入字符串过滤出你想要观察的线程)。点击某个显示会显示这个线程的名称、状态、阻塞和等待的次数、堆栈的信息。 

    统计图显示的是线程数目的峰值(红色)和当前活动的线程(蓝色)。 

    另外下面有个按钮检测到死锁,有时候会有用处。

     

    类:


     

    图表显示了 类加载/时间

    红线是类加载总数(包括后来卸载的)

    蓝线表示当前的类加载数量。

    选项卡底部的详细资料显示了自JVM启动后类加载的总量,当前加载量和卸载量。

     

    VM摘要


     

     

    MBeans:


     

    左边的树形结构显示了所有的MBean,按其对象名排序。当在树种选择了一个MBean之后,其属性、操作、通知和其他信息会在右边显示。

    如果属性值是可写的(可写会蓝色显示),你可以设置属性值。你也可以调用在操作选项卡中显示的操作。

     

    四、参考资料

        JConsole远程连接:
        http://java-boy.iteye.com/blog/608438

        如何利用 JConsole观察分析Java程序的运行,进行排错调优:
        http://jiajun.iteye.com/blog/810150

        JConsole监控Tomcat简单配置:
        http://blog.itpub.net/23071790/viewspace-701205/

    /bin/catalina.sh文件开头加入:

    -Djava.rmi.server.hostname=192.168.1.122
    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=911
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false
    比如说我需要了解在压力测试过程中Linux系统中resin服务器的资源占用情况,那么我就可以在resin的启动项中加入上述信息,这样通过本机Windows中JDK的Jconsole来监控了。
    其中第一个参数可以用来设置欲连接的Linux机器的IP地址,该项必须设置,否则远程连接会因为解析到127.0.0.1出现连接失败的情况。
    如果不设置该项,也可以通过修改Linux的/etc/hosts文件,使hostname -i指向正确的IP,所以还是该选项更为方便。
    第三个参数是设置欲连接到Linux机器上的端口号,在不跟Linux中现有端口冲突的情况下,可随意设置该端口

  • 相关阅读:
    iOS学习6:CoreGraphics简单绘图
    什么是GCD
    iOS对象序列化
    Swift中基本类型的转换
    DataTable转List
    .Net Mvc Automated Migration 数据迁移
    .Net WebApi基本操作
    Sql Server日期时间格式转换
    jquery ajax POST 例子详解
    发布.net mvc遇到的HTTP错误 403.14Forbidden解决办法
  • 原文地址:https://www.cnblogs.com/shengs/p/4443080.html
Copyright © 2020-2023  润新知