性能测试分析监控常见方法介绍
针对性能测试过程中常用的一些监控命令及工具进行梳理。
一、服务器监控
服务器级别监控主要看以下方面
一般使用监控方式如下:
top命令:
查看当前系统CPU的使用情况
输入1可以查看全部CPU的情况
free -m命令:
查看当前系统内存的使用情况(以MB为统计单位)
输出结果:
buffer和cache: 都是Linux下的缓存机制,其中buffer为写操作的缓存,cache为读操作的缓存。
swap: 交换空间,磁盘上的一块空间,当系统内存不足时,会使用交换空间
df -h命令:
查看当前系统磁盘空间的使用情况
iostat命令:
iostat -x -k 1
-x:展示磁盘的扩展信息 -k:以k为单位展示磁盘数据 1:每1秒刷新一次
主要关注指标 util:磁盘IO使用率,单位%,反映磁盘的繁忙程度,上限100%
vmstat命令:
综合显示了CPU、进程、内存、磁盘IO等信息
vmstat 1 # 1 刷新频率
dstat命令:
是较全能的全能监控工具,支持实时刷新。
需要先安装才可以使用:yum install dstat
dstat -tcmnd --disk-util
nmon:
可以使用对应的EXCEL生成一些服务器相关指标的图形,针对稳定性场景比较合适,同时里面的图表可以用作测试报告,非常使用,之前写过这方面的介绍,有兴趣可以点击看看【nmon介绍及使用】
二、应用级别监控
java程序监控
1) 命令行监控:
监控jvm的GC情况 : jstat -gcutil pid 1000 100
替换PID为指定的进程号,1000代表刷新频率 100代表输出100次
查看jvm配置信息: jmap -heap pid:
可以看到java进程的堆的配置信息,各区的空间大小和配置信息
查看jvm中类和对象的占用情况: jmap -histo 5279 | head -20
查看jvm中各个类的实例数、占用内存数量以及类的全名
堆文件dump: jmap -dump:format=b,file=m.hdump 19300
对堆内存进行dump,以文件的形式进行保存下来,可以用jvisualvm等工具对文件进行分析
通过装入本地的工具,可以查看详细情况
2) 工具类监控:
jvisualvm
JDK提供的一个JVM运行监控工具,可用于查看dum文件,CPU及内存的占用情况,GC垃圾回收情况等信息。
监控之前先对jvm加监控参数,在tomcat的bin目录下,catalina.sh文件中,第二行 添加
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.0.10"
注意这里是一行,hostname需修改成服务器的地址,端口用一个没用过的即可。
重启之后就可以使用在控制台输入 jvisualvm 打开界面监控相关程序。
Arthas(阿尔萨斯)
阿里巴巴开源的Java诊断工具,深受开发者喜爱。
下载: curl -O https://alibaba.github.io/arthas/arthas-boot.jar
启动:java -jar arthas-boot.jar 进入到arthas交互环境
输入命令:
help:会出现所有arthas支持的命令
thread:列出线程的信息,按照cpu占用率从高到低列出来,如果线程太多,可以通过-n参数指定输出的行数。
thread -b:可以查看block的线程
dashboard :可以实时查看内存的情况,定位内存溢出问题。