jmeter 最佳实践

一、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
简单的请求测试构建完成

image.png

二、部署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

image.png

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)

你可能感兴趣的:(jmeter 最佳实践)