2017年04月25日

方法、套路、工具,都能提高生产力。

这一段时间我们做了一些压测工作,压测过程比较复杂,就不一一记录,把过程中用到的一些工具记录一下。

(同步发在我的OSCHINA博客)

-

一、 Java虚拟机有哪些性能工具

我们按操作方式分为两类,有图形界面的和没图形界面的。

-

  • 1.没图形界面的

    • jstat(JVM Statistics Monitoring Tool): 虚拟机状态信息统计监视工具,(本次主要用他来输出gc信息了。)
    • jinfo(Configuration Info for Java): 查看调整虚拟机参数工具。
    • jps(JVM Process Status Tool): 虚拟机进程状况工具。
    • jmap(Memory Map for Java): 生成堆转储快照工具。
    • jstack(Stack Trace for Java): 堆栈跟踪工具。

-

  • 2.有图形界面的

    • VisualVM(All-in-one Java Troubleshooting Tool): 多合一监控和故障处理工具,最常用的Java性能工具(也是本次压测用的最多的工具)。
    • Jconsole(Java Monitoring and Management Console): Java监控管理工具。

-

二、 都是咋启动的,能干啥

-

  • jstat: 该工具是用来看虚拟机状态,主要是看堆状态。
    -> 启动方式: jstat -gcutil 2983 2000 10
    -> 参数含义: 监视Java堆状况,线程号,隔2000毫打一次,共打10次。
    -> 另外该工具还有其他很多功能,参 jstat -help。

-

  • jinfo: 该工具是用来实时的查看和调整虚拟机各项参数。
    -> 启动方式: jinfo -flag MaxPermSize 2983
    -> 参数含义: 查看PermSize大小,线程号
    -> 另外该工具还有其他很多功能,参 jinfo -help。

-

  • jps: 该工具可以列出虚拟机进程,以及主类名和主类ID,我们一般也会用PS来看。
    -> 启动方式: jps -l
    -> 参数含义: 输出主类全名或Jar路径。
    -> 另有 -q 输出本地线程ID,-m 输出main()函数参数,-v 输出虚拟机启动JVM参数。参 jstat -help。

-

  • jmap: 该工具是用来生成堆转储快照(heapdump)等功能。
    -> 启动方式: jmap -dump:format=b,file=filename.bin 2983
    -> 参数含义: 输出二进制format和什么文件名,线程号
    -> 另外该工具还有其他很多功能,参 jmap -help。

-

  • jstack: 该工具是用来生成当前线程快照。可以看看死锁、死循环、外部资源等待等问题。
    -> 启动方式: jstack -l 2983
    -> 参数含义: 显示堆栈以及关于锁的附加信息,线程号。
    -> 另有 -F 强行输出,-m 本地方法堆栈参数,参 jstack -help。

-

  • VisualVM: 目前最强大的运行监控和故障解决工具。
    -> 启动方式: jvisualvm
    -> 配置、环境、CPU、GC、堆、方法区、线程信息、堆转储、插件等。
    -> 功能比较强大和集中。通过下述JVM启动参数进行远程监控,在图形界面中添加远程机器即可。

        -Dcom.sun.management.jmxremote.port=1012    
        -Dcom.sun.management.jmxremote.ssl=false    
        -Dcom.sun.management.jmxremote.authenticate=false    
        -Djava.rmi.server.hostname=$HOST_ADDR   
        
    

-

  • Jconsole: 也是图形界面监控管理工具。
    -> 启动方式: jconsole
    -> 概述、内存、线程、类、VM摘要、MBean等。
    -> 大体上可以由VisualVM来解决,也有独到用处。