性能测试/监控工具
年初的时候做了些性能测试工作,现将用到的软件及使用方式简单记录一下。
一、BadBoy
BadBoy是一个帮助测试和开发复杂动态应用程序的很有用的工具,包括简单而全面的捕获/重放功能,强大的负载测试支持以及详细的报告和图表等;也可以将录制的脚本导出为JMeter支持的jmx格式脚本。
1、安装
-
运行安装软件按提示安装即可
注意:Badboy使用本机IE浏览器,如果对浏览器版本有要求,则需检查或更新本地IE浏览器版本
2、配置
- 通用设置
Badboy默认在启动后就会录制,可以在菜单栏Preferences
中的General
页签中修改设置:
例如:设置在启动时不检查新版本而且不立即录制
- 录制设置
在菜单栏Preferences
中的Recording
页签中修改设置:
例如:增加需要过滤掉的URL
3、录制
- 输入要录制的URL,选中要录制的
Step
,点击Record
按钮或右键Step
选择Record Here
开始录制
- 如果需要录制多个
Step
,使用工具栏的Create New Step
或右键父Step
选择Add Child Step
- 录制完成后可以通过
File
–Export To JMeter
导出JMeter脚本
通过分步录制,之后在JMeter中设置每个Step
的循环次数可以实现Loadrunner中的vuser_init
、Action
、vuser_end
效果。
4、插件
- 在Badboy的安装目录下的
plugins
目录中新增插件目录:
-
在自定义插件目录中创建以下文件:
-
init.js
使用
int addView(String strTitle, String strPlugin, String strHTML)
方法添加一个插件视图使用
void bindKey(int key, int dwModifiers, String strPlugin, String strCommand)
方法绑定快捷键badboy.plugin.addView("myplugin","myplugin","plugin.html"); badboy.plugin.bindKey(85,8,"myplugin",'alert("hello world")');
-
plugin.html
此html为自定义插件的内容显示页面,下面的例子中显示出了被播放的次数和打开的页面中的链接数:
<html> <head> <style type="text/css"> * { font-family: arial; } body { overflow: auto; } </style> <script type="text/javascript"> function init() { window.setInterval(update,2000); } function update() { var played = window.external.summary(1,"played"); document.getElementById('played').innerHTML = "Played: " + played; document.getElementById('linkcount').innerHTML = "Links: " + window.plugin.browser("").document.links.length; } </script> </head> <body onload="init();"> <h2>Example Plugin</h2> <p id="played"> </p> <p id="linkcount"> </p> </body> </html>
-
效果
-
部分API
var p = badboy.plugin; var st = badboy.script; var step = st.find(2); step.set("name", "RC"); var child = p.addChild(step.id, "Child Step", -1); /*window.external == badboy;//true*/
-
参考链接
-
二、JMeter
JMeter是一个基于Java的开源压力测试工具。
1、安装
-
安装JDK并设置Java环境变量
-
安装JMeter
-
配置环境变量
-
新建环境变量:
JMETER_HOME
:D:\ProgramFiles\apache-jmeter-4.0
-
在
CLASSPATH
中添加:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
-
2、压力测试
-
运行JMeter安装文件
bin
目录中的jmeter.bat
启动JMeter -
导入Badboy录制导出的
jmx
脚本File – Open – 选择脚本
-
创建测试数据
新建一个用于性能测试时使用的数据文件todo.csv
:
使用Excel
打开:
- 导入测试数据
在线程组(Thread Group)右键,添加:Add
– Config Element
– CSV Data Set Config
配置CSV Data Set Config
:
选择上一步创建的todo.csv
文件,并设置变量:
- 参数化
找到需要发送业务数据的请求,将请求中的参数替换为变量:
-
添加监听器
在线程组(Thread Group)右键,添加:
Add
–Listener
–View Result Tree
、Aggregate Graph
和Response Time Graph
-
View Result Tree
察看结果树:记录每一个请求的请求和响应情况
-
Aggregate Report
带图形的聚合报告,会按请求的名称对请求作统计分析
-
Response Time Graph
随时间的响应时间图
-
-
设置线程相关属性
-
Number of Threads
线程(用户)数;上图中设置了200个线程(用户)。
-
Ramp-Up Period
表示所设置的线程数在多少秒内启动;上图设置了200个线程,在500秒内启动完,即平均每5秒加载2个用户。
-
Loop Count
设置循环次数,如果设置为
Forever
(永远),则需要手动停止。 -
Duration
持续时间;上图中设置了持续600s,即1分钟。
-
-
点击启动(Start)按钮即可开始测试
3、报告参数解释
-
聚合报告
-
Label
显示JMeter的Element的名称,例如HTTPRequest的请求地址。
-
Samples
一共发出的请求数,如果模拟10个用户,每个用户迭代10次,每次发送1个请求,那么这里显示100。
-
Average
平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间。
-
Median
中位数,也就是 50% 用户的响应时间。
-
90% Line
90% 用户的响应时间(不超过xx )。
-
Min
最小响应时间
-
Max
最大响应时间
-
Error%
出现错误的请求的数量/请求的总数
-
Throughput
吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transactionper Second 数。
-
-
图形报告
-
样本数目
发送到服务器的所有请求数
-
最新样本
服务器响应最后一个请求的时间
-
吞吐量
服务器每分钟处理的请求数。是指在没有帧丢失的情况下,设备能够接受的最大速率。
-
平均值
总运行时间除以发送到服务器的请求数
-
中间值
时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
-
偏离
服务器响应时间变化、离散程度测量值的大小,换句话说,就是数据的分布。偏离值是一个观察测试环境和系统稳定性的数据,偏离值越小则环境越稳定,所测得的数据越有效,反之,如果其值太大则说明环境不稳定,在这种情况下测得的数据就没有什么价值。所以,在搞测试的时候,必须要保证偏离值是小的。
-
三、M/Monit
Monit是一个开源监控管理工具(类似supervisor),能够监控linux系统的负载、文件、进程等。当系统负载过高、监控文件被篡改、进程异常退出时,能够发送邮件报警,并能够自动启动或关闭异常进程。Monit内嵌web界面,能够看到当前主机上的监控项状态。M/Monit是一个集中式管理多台Monit的可视化工具。
1、M/Monit
-
解压并还原文件
gzip -d mmonit-3.7.1.tar.gz
tar -xf mmonit-3.7.1.tar
- 修改MMonit配置
M/Moint默认端口是8080,可以在conf/server.xml
文件中修改web监控页面地址端口:
<Connector address="*" port="8888" processors="10" />
- 修改防火墙配置
开放8888端口:
vi /etc/sysconfig/iptables
重启防火墙
service iptables restart
- 启动和停止
切换到bin
目录下,执行:
#启动
./mmonit
#停止
./mmonit stop
-
访问监控服务首页
-
URL
http://192.168.148.128:8888/
-
用户
管理员:admin/swordfish
普通用户:monit/monit
-
2、Monit
-
解压并还原文件
gzip -d monit-5.25.2.tar.gz
tar -xf monit-5.25.2.tar
- 配置M/Monit
修改conf/monitrc
文件,取消下面行的注释,并将IP和端口改为M/Monit所在的机器IP和它的端口:
- 配置要监听的进程
修改conf/monitrc
文件,配置要监听的进程文件,以Tomcat为例:
check process tomcat with pidfile /var/run/tomcat.pid
如果没有进程文件,需要先创建,参考:Tomcat将pid输出到文件
- 启动
在monit
安装目录下,执行:
./bin/monit -c ./conf/monitrc
其中使用-c
指定配置文件的位置。
启动之后再刷新M/Monit的监控页面,即可看到如下界面,表示监控成功:
- 停止
与启动类似,执行:
./bin/monit -c ./conf/monitrc quit