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

虚拟机性能监控与故障处理工具

2014-12-11 10:31 549 查看
   给一个系统定位问题的时候,知识、经验是关键基础,数据时依据,工具是运用知识处理数据的手段。

    jdk采用java代码来实现这些监控工具有特别的用意:当应用程序部署到生产环境中时,无论是直接接触到物理服务器还是telnet到服务器上都可能会受到限制,借助于

    tools.jar类库里面的接口,可以直接在应用中实现功能强大的监控分析能力。

    jdk主要的命令行监控工具:

    ① jps:(JVM Process Status Tool)虚拟机进程状况工具

        功能:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main class,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID(LVMID)。

        对于本地虚拟机进程来说LVMID与操作系统的进程IP(PID)是一致的。使用Windows的任务管理器或Unix的ps命令也可以查询到虚拟机进程的LVMID,但是如果

        同时启动多个虚拟机进程,无法根据进程名称定位时,只能依赖于jps。

        jps命令格式: jps [options] [hostid]

        执行样例:jps -l

        主要选项:-q 只输出lVMID,省略主要名称。

                  -m 输出虚拟机进程启动时传递给主类main()函数的参数

                  -l 输出主类的全名,如果进程执行的是jar包,输出jar路径

                  -v 输出虚拟机进程启动时的JVM参数

    ② jstat:(JVM Statistics Monitoring Tool)虚拟机统计信息监控工具

        功能:用于监控虚拟机各种运行状态信息的命令行工具,可以显示本地或远程虚拟机进程中的类加载,内存,垃圾收集,JIT编译等运行数据。在没有GUI图形界面

        只提供了纯文本控制台环境的服务器上,它将是运行期虚拟机性能问题的首选工具。

        命令格式:jstat [options vmid [interval[s|ms] [count]]]

        例如:jstat -gc 2764 250 20

        表示的每隔250毫秒查询一次进程2764垃圾收集的状态,一共查询20次。

        选项option代表着用户希望查询的虚拟机信息,分为:类装载、垃圾收集、运行编译状况。

        主要选项:

        -class        监视类装载、卸载数量、总空间及类装载所耗费的时间

        -gc           监视java堆的状态。包括Eden区、2个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等数量。

        -gccapacity   与-gc一致,输出主要java堆各个区域使用到的最大和最小空间

        -gcutil        与GC一致,输出的是已使用空间的百分比

    ③  jinfo:(configuration Info for java)java配置信息工具

         功能:实时的查看和调整虚拟机的各项参数。

         使用jps -v 参数可以查看虚拟机启动时显示指定的参数列表,但是如果想知道未被显示指定的参数的系统默认值,除了找资料,就只能使用info的-flag参数进行查询。

         jinfo还可以用-sysprops选项把虚拟机进程的System.getProperties()的内容打印出来。

         命令格式:jinfo [option] pid

         例如:查询CMSInitiatingOccpancyFraction参数值

         jinfo CMSInitiatingOccpancyFraction 1444

    ④  jmap:(memory Map for java)java 内存映像工具

         功能:用于生成堆转储快照(一般称为heapdump或者dump文件)。

         jmap的作用不仅仅是获取dump文件,它还可以查询finalize执行队列,java堆和永久代的详细信息,如空间使用率、当前用的是那种收集器的。

         jmap和jinfo一样,有不少功能在windows平台是受限的。除了生成dump文件的-dump选项和用于查看每各类的实例、空间占用统计的-histo选项所有操作系统都提供之外,

         其余选项只有在linux/Solaris下使用。

         jmap命令格式:

         jmap[option] vmid

         选项:

         -dump 生成java堆转储快照,格式为-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象

         -histo 显示堆中对象统计信息、包括类、实例数量和合计容量

    ⑤ jhat:(JVM heap analysis Tool)虚拟机堆转储快照分析工具

         与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个http/html服务器,生成的dump文件的分析结果,可以在浏览器中查看。

         一般不会用jhat命令行来分析dump文件。

    ⑥ jstack:(Stack Trace for java)java 堆栈跟踪工具

        功能:用于生成虚拟机当前时刻的线程快照(一般称为threaddump 或者javacore文件),线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合。

        生成线程快照的主要目的是定位线程出现长时间停顿的原因。如线程间的死锁、死循环、请求外部资源导致的长时间等待等都是导致线程出现长时间停顿的原因。

        命令格式:

        jstack [option] vmid

        主要选项:

            -F      当正常输出的请求不被响应时,强制输出线程堆。

            -I       除堆栈外,显示关于锁的信息。

            -m       如果调用本地方法外,可以显示C/C++的堆栈

    

    ⑦ jdk可视化工具

        JConsole:java监视与管理控制台

         通过jdk/bin目录下的“Jconsole.exe”启动JConsole。

         主界面包括:概述、内存、线程、类、vm摘要、MBean

         内存:相当于可视化的jstat命令,用于监视受收集器管理的虚拟机内存的变化趋势。

         线程:相当于可视化的jstack命令。



如下图所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  虚拟机