概述
性能测试过程中,对服务器资源的监控是必不可少的。这里的资源又分了两块,windows和linux
linux下监控资源
访问网址http://jmeter-plugins.org/downloads/all/,下载三个文件。其中JMeterPlugins-Standard和JMeterPlugins-Extras是客户端的,ServerAgent是服务端的。
前两个是jmeter扩展插件,解压后将jar拷贝包到jmeter的lib/ext目录下,最后一个是服务器监控插件,解压到服务器上
将ServerAgent-2.2.1.zip解压后放在需要监控的服务器上,并执行
chmod 777 startAgent.sh 赋权
./startAgent.sh 启动监控
配置端口和ip,端口默认4444
服务器上可以修改默认端口--./startAgent.sh –udp-port 0 –tcp-port XXXX
如果配置正确,但是始终无法监控到服务器,需要考虑 4444 端口是否在服务器防火墙中被禁用!
运行查看结果
jmeter隐藏功能:指定进程号进行监控。需要双击空白的地方,右边会出现三个点。这边可以根据服务器的pid进程号来监控资源
监控CPU
数值都是代表百分比,比如默认配置下在曲线图中看到某个时间的数值是30,即代表此时总的cpu使用时间占比为30%。
两点比较有用的地方值得说明:
1:在Scope区域,可以通过Per Process选项来获取指定进程的CPU使用情况
2:在CPU Cores区域,我们可以选择监控指定的单个Core。
监控Memory
usedperc(默认)和freeperc两项的数值代表与总内存的百分比,其余指标项的数值都是指内存大小,选中对应项,可以看到Metric Unit区域单位配置将变为可用,通常Mb会比较适合观察。同样,也可以选择监控指定进程的数据
监控Disk I/O
queue(默认)的数值代表等待I/O队列长度,reads、writes分别代表每秒处理的读/写次数,readbytes、writebytes顾名思义,代表每秒读/写的数据量,单位同样在Metric Unit区域配置,通常Mb会比较适合观察。如果有挂载多个存储设备,可以在Filesystem Filter区域指定要监控的设备
windows下的资源监控1---jconsole
jdk目录下面有自带的资源监控平台--jconsole.exe
双击jconsole.exe,启动监控平台,可以选择需要监控的服务。可以是本地的tomcat进程,也可以是远程的服务器。这里我选择了监控jmeter进程。
在上方的概览中,我们可以看到堆内存,线程,类,cpu四个监控模块。时间可以自由选择。
在内存选项中,我们可以选择分别监控新生代,老年代,eden,space这些堆内存空间。同时可以手动gc内存。
在线程中,我们可以监控所有已加载的线程,同时一键检测线程死锁。
在类中,我们可以直观的看到各种性能数据。包括jmeter分配的线程池大小。
windows下的资源监控2---jmc工具,可以监控本地和远程机器
jmc的功能类似于jconsole,不过仪表盘式的外观和色彩看起来更加漂亮。
在底部的按钮可以针对堆内存,cpu,线程等进行性能诊断
windows下的资源监控2---jvisualvm工具,可以监控本地和远程机器
jvisualvm的功能更加强大一些,除了常规的数据监控之外,还可以对线程进行dump(只能针对本地,不能对远程服务进行dump)
jdk自带的监控工具是丰富多彩的,我们可以根据自己的需求去选择不同的工具。
内存瓶颈分析
内存资源成为系统性能的瓶颈的征兆 :
-
很高的换页率 (high pageout rate);
-
进程进入不活动状态 ;
-
交换区所有磁盘的活动次数可高 ;
-
可高的全局系统 CPU 利用率 ;
-
内存不够出错 (out of memory errors)
cpu瓶颈分析
CPU 资源成为系统性能的瓶颈的征兆 :
-
很慢的响应时间 (slow response time)
-
CPU 空闲时间为零 (zero percent idle CPU)
-
过高的用户占用 CPU 时间 (high percent user CPU)
-
过高的系统占用 CPU 时间 (high percent system CPU)
-
长时间的有很长的运行进程队列 (large run queue size sustained over time)