压测测试

目录

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. **Apache JMeter** Apache JMeter 是一款功能强大的开源测工具,支持对 Web 应用程序进行功能性、负载性和力测[^1]。它不仅能够模拟大量用户的并发请求,还可以监控服务器的关键指标(如 CPU 和内存),从而全面评估系统的性能表现。 2. **SRS-Bench** SRS-Bench 主要用于流媒体服务器的力测,特别是针对 RTMP 协议的支持较为出色[^2]。如果目标系统涉及音视频传输,则此工具可能更为适用。 3. **Go 测工具 (BenchMark & go-wrk)** 对于 Go 编写的后端服务,可以直接利用 Go 自带的 Benchmark 功能或者第三方库 `go-wrk` 来完成 HTTP 接口的性能测[^5]。这些工具的特点在于轻量级且高效,适合开发者快速定位代码层面的性能问题。 4. **WebRTC 测框架 Pion** 如果项目依赖于 WebRTC 技术栈,那么基于 Go 实现的 Pion 可能会成为不错的选择[^2]。尽管严格意义上讲这不是一个完整的测框架,但它提供了一定程度上的灵活性以便定制化开发特定用途的力测脚本。 #### 方法论 为了获得准确可靠的测数据,在实施服务器力测时需遵循以下原则: - 明确测目标:确定想要验证的具体方面,例如响应时间、吞吐率还是错误率等。 - 设计合理的测方案:包括但不限于定义虚拟用户数量、分布模式以及运行周期等内容。 - 配置必要的监测机制:除了记录基本的服务状态外,还应关注底层硬件资源消耗状况,比如借助命令行工具(top,iostat)[^3] 或者图形界面软件(FinalShell). - 执行非 GUI 方式的正式跑分操作:鉴于图形界面版本可能存在额外开销影响最终成绩的缘故,建议采用命令行形式启动实际测量过程[^4]. ```bash jmeter -n -t testplan.jmx -l results.csv ``` 以上即为一段典型的无头模式调用语句实例演示. #### 结合实际情况选型 不同类型的业务场景往往对应着各自专属的最佳实践路径;因此,在挑选具体实施方案前务必充分考量待测对象的技术特性及相关约束条件等因素后再做决定。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值