Jmeter-http 接口脚本的一般步骤:
- 新建线程组
- 并发用户数,每秒创建数,循环次数,执行时长等
- 新建 http 请求
- 构造get/post, 含 url、路径、请求方式和参数
- 配置config项, 含 cookie,header,变量参数,自定义函数等
- 配置断言,检测执行结果是否符合预期
- 其它的一些条件控制等,可以按需配置
- 新建查看结果
- table / tree / summary / aggregate 等 ,可导出结果数据,用于错误/性能分析
Jmeter下载:https://jmeter.apache.org/download_jmeter.cgi
使用此工具,我们可以按照压测指标需求, 有针对性的进行参数设置,执行和结果处理
支持Windows&Linux
- 测试场景
- 单一接口
- 依赖接口
- 测试时长
- 根据场景不同可选择: 分钟,小时,天等
- 测试指标
- 接口参数随机性,边界,固定,自增规则等
- 并发数/tps/响应时长
- 类型: cpu/内存/io/网络/是否考虑系统排他进程等
Windows环境,常用功能举例:
jmeter支持中英文语言切换:
新建线程组(Thread Group):
参数按需配置
需要留意:并发数, 每秒创建线程数, 循环次数, 启动延时
新建http请求(HTTP Request):
参数按需配置
需要留意: 针对一些限流/调用链路长的接口:name/参数,可阅读性要强,便于事后结果分析
应用服务ip & port,请求方式&参数,可以考虑边界值,现有配置的min/max 参数的溢出情况
新建cookie/header等config配置(Config Element):
新建断言配置(Assertions):
执行查看结果(Listener):
举例说明: table, tree, summary, aggregate结果:
点击执行后,可以按需进行排序等操作,看执行结果的关键属性值:
table类型的:
tree类型的:
summary类型的:
aggregate类型的:
- 可以将状态为error的导出到文件(如csv),用于分析和排查优化
- 可以在remote / local debug的过程中,复用请求数据,curl也可(配合使用其它分析工具/命令)
- 报告压测的结果, 需要留意观察的属性如: Samples, Average, error, Throughput, Min, Max, Connect time, Response code
error,tps需要留意观察评估确认,根据浮动变化调整执行参数
oops : 过程中若出现瓶颈问题,需要检查 cpu、网络等,确认是否服务器问题
另外需要考虑的问题点:数据库(sql,nosql)、应用服务(宕机)、中间件(tomact、Nginx)、网络(抖动/受限/dns/大数据包)和操作系统,单机/分布式调用链路,如(too many xxx, too open xxx, close xxx, wait xxx, not found xxx, load error xxx)等
Linux环境使用:
- 前置条件,需要先安装jdk,版本可选8
- 官网下载:https://mirror-hk.koddos.net/apache//jmeter/binaries/apache-jmeter-5.3.tgz并解压后,进入bin目录,执行即可:
./jmeter -n -t jmeter_http_shell.jmx -l jmeter_http_response.jtl
结果文件可用于分析问题
留意: .jmx 是脚本, jtl 是结果 , 文件支持使用文本编辑器打开