灿烂的阳光,苦涩的生活,认真做,你能行!

发布新日志

  • 运用Jconsole监控JVM

    2011-07-07 11:15:31

    Jconsole是JDK自带的监控工具。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗,不失为一款好工具。
           Jconsole的使用方法,稍微复杂一些。
           首先,来看看如何使用Jconsole 连接到远程linux服务器。
           1. 在本地安装JDK 6.0版本。
           2. 需要在远程服务器的jboss配置文件中,添加远程服务端口,并启动jboss。如下:
    JAVA_OPTS=”$JAVA_OPTS -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=$HOSTNAME”
           3. 在本地java/bin目录下找到jconsole.exe文件,运行。打开界面后,就可以连接了。

       4. 当Jconsole连接成功后,它从JMX获取信息,我们便可以在里面监控具体的内容。
           接下来,看一下这个工具的总括。
           Jconsole能捕获到以下信息:
           概述  -  JVM概述和一些监控变量的信息
           内存  -  内存的使用信息
           线程   - 线程的使用信息
           类       - 加载java类的信息
           VM    -  JVM摘要
           MBeans  - 所有MBeans的信息

           有了上面的概念之后,性能测试过程中需要关注哪些信息呢?一般主要关注内存栏、线程栏、类栏,概述栏和VM栏次之,MBeans栏在追踪具体问题时用到。下面详细说明一下使用方法。

        1. 内存栏
           内存栏中显示了内存堆栈消耗情况、内存池分区统计情况、垃圾回收情况等内容,并以图表实行显示出来。点击图表下拉框,可以选择具体需要的

    在这里,还可以强制执行GC,另内存回收更加爽歪歪!
             2. 线程栏
            线程栏中显示了当前运行的线程,并以图表实行显示出来。对于启用多线程系统分析,非常有用。例如,它可以协助我们追踪线程状态、线程阻塞、线程等待、线程挂起、线程资源争用问题

     3.类栏
            类栏中显示了当前加载类的信息。并以图表实行显示出来。如果要了解当前载入类的数量、已载入类的总数量、已卸载类的总数量,在这里查看非常有用。
       工具的使用,就介绍到这里。这款工具的好处在于,占用系统资源少,而且结合上期提到的Jstat,可以有效监控到java内存的变动情况,以及引起变动的原因。在项目追踪内存泄露问题时,很实用。
            但是它也有缺点,就是采集的信息比较难分析,不如JProfiler直观,需要有专业基础才能看得懂。

  • Jconsole_一个监控JVM资源的JDK自带小工具

    2011-07-07 11:00:04

    测试中LR总出现27796的错误提示timeout,烦的要死就是不知道问题出在哪儿。。后引进了这个小工具,非常不错,而且不须任何特殊配置即可使用,还是图形化的,很赞~

      被监控的服务器端配置:

      打开服务器的tomcat配置文件catalina.sh(路径为:/usr/local/tomcat6/bin),可直接在文件中找到此配置信息处,进行修改,修改后的信息如下:

    JAVA_OPTS='-Xms1024m -Xmx1024m -XX:PermSize=256m  -XX:MaxPermSize=256m -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=1092

    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.52.230'


      另外说明下,其中“jmxremote.port=1092”是自己配置的未被占用的端口号;“server.hostname=192.168.52.230”中的192.168.52.230为服务器本身的IP。

      如果是windows服务器,需要修改这个文件: catalina.bat:

    set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004"

    -Dcom.sun.management.jmxremote.authenticate="false"

    -Dcom.sun.management.jmxremote.ssl="false"


      监控资源的测试机配置:

      1.安装JDK1.6.0到测试机(winserver2003 EnterpriseEdition)上;

      2.在安装目录(默认:c:\ProgramFiles\Java\jdk1.6.0_16\bin)下,找到“jconsole.exe",双击打开即可显示"java监控和管理控制台"界面;

      3.新建一个连接,在新建连接界面的“远程进程”输入框输入要监控服务器的服务名称,如“service:jmx:rmi:///jndi/rmi://192.168.52.55:1090/jmxrmi” ,点“连接”接口监控到服务器的JVM资源啦!


      下面说下界面中的元素:

      概述 :记录了“堆内存使用情况”、“线程”、“类”、“CPU使用情况”共四个资源的实时情况;

      内存 :可以选择查看“堆内存使用情况”、“非堆内存使用情况”、“内存池"PS Eden Space"”等内存占用的实时情况;界面右下角还有图形化的堆一级、二级、三级缓存(从左到右)占用情况,当然,如果三级缓存被全部占用也就是很可能内 存溢出啦!这时可以去查看服务器的tomcat日志,应该会有“outofmemory"的异常日志信息。界面右上角处还提供了一个“执行GC”的手动垃 圾收集功能,这个也很实用~而且界面下方还有详细的GC信息记录。

      线程 :界面上部显示实时线程数目。下部还能查看到详细的每个进程及相应状态、等待、堆栈追踪等信息;

      :显示“已装入类的数目”、“已卸载类的数目”信息;

      VM摘要 :显示服务器详细资源信息,包括:线程、类、OS、内存等;

      MBean : 可在此页进行参数的配置。

Open Toolbar