JMeter接口测试-压力测试
压力测试:
(1)压测任务需求的确认
API有无缓存,即用固定接口参数进行压测还是进行接口参数随机化压测,要求支持多少并发数
服务器每秒处理的请求数目标是多少?每个request的平均响应时间目标是多少?
(2)压测设置
线程数:并发数
Rame-Up Period(in seconds):表示JMeter每隔多少秒启动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是50人,准备时长为5秒,那么需要5秒钟启动50个数量,也就是每秒钟启动10个线程。
循环次数:在不设置调度器的情况下,发起的总请求数=线程数*循环次数
调度器:设置压测的启动时间、结束时间、持续时间和启动延迟时间。一旦设置了持续时间,就需要把循环次数勾上永远,否则在持续时间内达到循环次数,线程数就会停止运行。例如线程数设置10人,循环次数2次,持续时间60秒,点击运行,假设在第30秒,10个线程数已经循环跑完2次了,即发起了20次请求,那么在第31秒到60秒这个时间段,线程数就停止运作了。
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
Samples:表示你这次测试中一共发出了多少个请求
Average:平均响应时间——单个 Request 的平均响应时间,单位毫秒
Median:中位数,也就是 50% 用户的响应时间,单位毫秒
90% Line:90% 用户的响应时间
假设总的请求数为10次,响应时间由小到大分别是55、56、57、58、59、60、61、62、63、64(单位毫秒),90%用户的响应时间是第90%个数(总共10个数),即第9个数63,表示 90%的请求响应时间没有超过63毫秒
95% Line:95% 用户的响应时间
99% Line:99% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——表示每秒完成的请求数(Requests/Second)
KB/Sec:每秒从服务器端接收到的数据量
(4)在sandbox环境用Jmeter做压测,在线程数设置的比较多的情况下,例如200,300个线程跑3分钟,我遇到过在执行过程中Jmeter会卡死,报内存溢出outofmemory错误。
解决方法:
用notepad打开Jmeter.batch文件,
把
set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
改为:
set HEAP=-Xms256m -Xmx1024m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
重启Jmeter