jmeter入门 - 测试网站访问性能
jmeter简介(百度)
Apache JMeter是Apache组织开发的基于Java的压力测试工具。可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。
jmeter优势
开源免费
扩展性强,JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用
用Jmeter测试网站的简单实践
测试网站负载达到10Qps时的响应时间(Qps: Query Per Second 每秒查询次数)
1 简单构建测试模型:有20个用户,在2s内分别向服务器发送请求了一次,循环3次。
2 使用jmeter测试网站负载达到10Qps时的响应时间
1) 建立测试计划和线程组
填写线程组的各项数据
线程数:虚拟用户数
准备时长:设置的虚拟用户数在这段时间内全部启动
循环次数:每个线程循环发送请求的次数
2) 添加HTTP请求
在线程组 –Sampler - 添加HTTP请求
Sampler: 取样器,是与服务器交互的单元。一般进行三部分工作:向服务器发送请求,记录服务器响应时间,记录相关时间信息
HTTP请求重要参数介绍:
服务器名称或IP:HTTP发送请求的目标服务器的名称或者ip地址
端口号:HTTP发送请求的目标服务器的端口号,默认为80
协议:向目标服务器发送HTTP请求用的协议,默认为http协议
路径:目标url路径,不包括服务器ip和端口
同请求一起发送参数 : 在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对
3) 添加定时器
简单介绍一下定时器:
1 定时器的作用域:
① 定时器是在每个sampler(采样器)之前执行的。
② 希望sampler执行完再等待,可以使用Test Action
2 几种定时器介绍
① 固定定时器(Constant Timer):如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间
② 高斯随机定时器(Gaussian Random Timer): 如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,上图表示暂停时间会分布在100到400之间,计算公式参考:Math.abs((this.random.nextGaussian() * 300) + 100)
③ 固定吞吐量定时器(Constant Throughput Timer): 可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行
④ 同步定时器(SynchronizingTimer):阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力
(1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量
(2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数
⑤ BeanShell定时器(BeanShell Timer): 这个定时器,一般情况下用不到,但它可以说是最强大的,因为可以自己变成实现想要做的任何事情,例如:希望在每个线程执行完等待一下,或者希望在某个变量达到指定值的时候等待一下。
这里给大家介绍下BeanShell:
BeanShell是一种松散类型的脚本语言(这点和JS类似),一种完全符合java语法的java脚本语言,并且又拥有自己的一些语法和方法。
传送门(另外一位博客园作者的博客):http://www.cnblogs.com/jssy/archive/2006/10/23/537101.html
我们这里使用固定吞吐量定时器(Constant Throughput Timer)
Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的10 QPS ,这里的值应该是600 。
4) 添加监听器查看响应数据
5) 分析报告
Samples:线程数*循环次数
Average:平均每个线程的响应时间(默认单位均为ms)
Median:50%用户的响应时间
90%Line:90%用户的响应时间
95%Line:95%用户的响应时间
99%Line:99%用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量 – 每秒完成的请求数
Received KB/sec:每秒从服务器端接收到的数据量
Sent KB/sec : 每秒发送的数据量
参考博客:
http://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html