压测测试

目录

0:前言

1:工具选择

1.1 jmeter

1.2 ab

2:准备测试环境,测试数据,录制测试脚本

2.1 准备测试环境

2.2 准备测试数据

2.3 录制测试脚本

3:执行测试

4:测试结果分析


0:前言

业务所需,需要对服务器上指定的接口进行压力测试,目标:检测吞吐量是否可以达到1000/s

1:工具选择

1.1 jmeter

1.2 ab

2个工具都是apache旗下的压测工具,安装配置都很方便。实际工作中,2个工具都有使用,ab比较轻量级,jmeter有gui页面,可以配置复杂的请求。

使用结论:ab得到的吞吐量数值比jmeter大个4-5倍,分析原因:

jmeter是一次完整的请求和返回, 而AB只是发出去请求,并不对返回做处理,只是请求发送成功或者失败。所以使用jmeter更准确一些

Jmeter支持可变参数和CSV数据集的输入,能设定更加复杂的测试样例,实际测试中需要传递不同的参数

所以还是使用了jmeter


2:准备测试环境,测试数据,录制测试脚本

2.1 准备测试环境

在ubuntu上使用jmeter需要jre环境

1:去oracle官网下载jre,解压,配置环境变量(网上都有,随便一搜)

2:去jmeter官网下载tgz压缩包,解压

2.2 准备测试数据

根据实际业务需求,准备测试数据

2.3 录制测试脚本

确定需要测试的接口,在jmeter的gui里进行配置,调用成功后开始配置可变参数

3:执行测试

执行命令为:

./jmeter.sh -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

由于需要多次执行,取平均值,所以又写了个shell命令来负责循环

for i in {1..10};do ./jmeter.sh -n -t test.jmx -l testcsv/test-$i.csv -e -o testReport/test-$i/;done

针对同一个脚本,循环多次获取结论的情况已经实现。

后来,又需要测试不同的线程数,每次修改jmx文件太累,经搜索,线程数也可以配置成变量,所以继续优化jmx脚本

线程数配置成变量的方式传进来
${__P(threadNum)}

eg:线程数从100,递增到1000. 每个线程重复执行10次的脚本优化如下

#!/bin/bash
for threadCount in $(seq 100 100 1000)
do
    for i in {1..10}
    do
            ./jmeter.sh -n -t test.jmx -J threadNum=$threadCount -l testcsv/test$threadCount-$i.csv -e -o testReport/test$threadCount-$i/
        sleep 1
    done
done

在命令行下执行这个脚本就可以跑压测啦

4:测试结果分析

测试结果都保存在了testReport中,每次结论都是一个文件夹,可以打开html通过ui的方式查看

不过我的数据量太大了,所以直接找到数据位置,写个脚本全部读出来。

吞吐量数据在文件夹下的 statistics.json 文件中,取 Total 对象下的 throughput

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值