您的位置:首页 > 运维架构

十二、JVM如何利用工具来监控调优前后的性能变化。

2017-07-08 16:27 579 查看
    工具做为图形化界面来展示更能直观的发现问题,另一方面一些消耗性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率低,因此利用工具来分析jvm相关问题,常常可以达到事半功倍的效果来。

    JVM监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具。jdk自带工具一般在jdk bin目录下面,以exe的形式直接点击就可以使用,其中包含分析工具已经很强大,几乎涉及了方方面面,但是我们最常使用的只有两款:jconsole.exe和jvisualvm.exe;第三方的分析工具有很多,各自的侧重点不同,比较有代表性的:MAT(Memory Analyzer Tool),GChisto等。

    对于大型Java应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难再测试环境中进行重现。JVM能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储(Heap Dump)文件中,从而为我们分析和诊断问题提供了重要的依据。其中VisualVM和MAT是dump文件的分析利器。

   JDK自带的工具

    jconsole

    Jconsole(Java Monitoring and Management Console)是从java5开始,在JDK自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。jconsole使用jvm的扩展机制获取并展示虚拟机中运行的应用程序的性能和资源消耗等信息。

    直接在jdk/bin目录下点击jconsole.exe即可启动,界面如下:



    在弹出的框中可以选择本机的监控本机的java应用,也可以选择远程的java服务来监控,如果监控远程服务需要在tomcat启动脚本中添加如下代码:

        -Dcom.sun.management.jmxremote.port=6969  

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

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

    连接进去之后,就可以看到jconsole概览图和主要的功能:概述,内存,线程,类,VM,MBeans

    概述,以图表的方式显示出堆内存使用量,活动线程数,已加载的类,CPU占用率的折线图,可以非常清晰的观察在程序执行过程中的变动情况。



    内存,主要展示了内存的使用情况,同时可以查看堆和非堆的变化值对比,也可以点击执行GC来触发GC的执行



    线程,主界面展示线程数的活动数和峰值,同时点击左下方线程可以查看线程的详细信息,比如线程的状态是什么,堆栈内容等,同时也可以点击"监测死锁"来检查线程之间是否有死锁的情况。



    ,主要展示以加载类的相关信息。

    VM概要,展示JVM所有信息总览,包括基本信息,线程相关,堆相关,操作系统,VM参数等。

    MBean,查看MBean的属性,方法等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: