一、jmeter编写脚本
一般调试都是在本地GUI界面调试,成功之后上传服务器上进行测试
本地Windows/Mac安装
官网下载Apache JMeter - Download Apache JMeter 选择Binaries,下载zip包即可
解压包
Windows 双击 jmeter.bat
编写脚本
1、右键test plan
-> threads
->thread group
2、右键thread group
-> add
->sampler
->http request
3、右键thread group
-> add
->listener
->view results tree
简单的请求测试构建完成
二、部署linux
对于高并发测试,最好的做法是分布式并发测试
由于机器不够,来记录下单台测试
压力机:A,被测机:B
需要把jmeter 放在A上面,然后去压B
安装
上面本地下的包可以直接拿来用,上传到服务器,解压,在包内 bin
目录下直接运行 jmeter -v
出现版本号即安装成功
上传脚本
在当前目录新建scripts
用 winscp等工具把调试好的脚本.jmx
文件上传
运行
jmeter -n -t scritps/{name}.jmx -l {name}.jtl -e -o {报告文件夹}
eg:
jmeter -n -t scritps/test.jmx -l test.jtl -e -o report
ps:
test.jtl
文件一定要先删除
report
文件夹要是空的
下载报告
执行完报告在report
文件夹内,下载到本地打开即可
三、最佳实践
性能测试最关键的方面之一是能够模拟应用程序上的实际负载。但是,确定目标负载的并发用户数是不够的。在测试阶段使用的相同目标负载下,测试的应用程序在生产中可能会失败。
线性负载
100 个用户,120s内添加完成、持续 300s
但这不是最佳实践
image.png
步进负载
100个用户,渐进增长,一段负载后增加25人来测试,最终到达100人
需要安装Ultimate Thread Group插件
右键test plan
-> Add -> Threads (Users) -> jp@gc - Ultimate Thread Group
Start Threads Count:启动多少线程
Initial Delay,sec:延迟多少秒开始启动线程
Startup Time,sec:启用{Start Threads Count} 个线程花费多少秒
Hold Load For,sec:线程全部启动完成后再持续运行多少秒,在此期间,每个线程请求完一遍后会再次发起相同的请求,若有思考时间,则会间隔设定的思考时间后再发起
Shutdown Time:在多少秒内将 {Start Threads Count} 个线程全部停掉
每分钟增加25个用户
image.png
更好的峰值测试
峰值测试是测试服务器性能方法之一
25个用户一分钟内启动,持续4分钟
75个用户2分钟后进来,10s启动,持续20s后10s内离开
这种梯形负载可以更好的模拟正式环境
image.png关于减少资源使用的一些建议
使用CLI模式:jmeter -n -t test.jmx -l test.jtl
尽量少用监听器;如果使用上面的-l标志,可以把它们全部删除或禁用。
在负载测试中不要使用 "查看结果树 "或 "查看结果表 "监听器,只在脚本阶段使用它们来调试你的脚本。
与其使用大量类似的采样器,不如在一个循环中使用同一个采样器,并使用变量(CSV数据集)来改变采样。[Include Controller在这里没有帮助,因为它把文件中的所有测试元素都加入到测试计划中。]
不要使用功能模式
使用CSV输出而不是XML
只保存你需要的数据
尽可能少地使用断言
使用性能最好的脚本语言(见JSR223部分)
如果你的测试需要大量的数据--特别是如果需要随机化--在一个可以用CSV 数据集读取的文件中创建测试数据。这就避免了在运行时浪费资源。
四、插件
单位时间内活动的线程数:ActiveThreadsOverTime
服务器资源监控
jmeter 插件:PerfMon
被测服务端部署:perfmon-agent
参考
JMeter爬坡期:终极指南|Perforce的火焰计 (blazemeter.com)
Apache JMeter - User's Manual: Best Practices
jmeter使用Ultimate Thread Group线程组详细教程 - 风吹稻香 - 博客园 (cnblogs.com)
网友评论