使用 JMeter 测试博客新增接口的 QPS


使用 JMeter 测试博客新增接口的 QPS

在开发一个博客系统时,确保接口性能能够支撑高并发访问至关重要。本文将介绍如何使用 JMeter 对一个博客新增接口进行性能测试,测算其 QPS(每秒查询率),并模拟 JMeter 的工作流程,最后解释如何得出接口的 RT(响应时间)和 QPS。

1. 博客新增接口简介

我目前有一个博客新增接口,假设其基本信息如下: - 接口地址POST /api/blog/create - 请求参数

json 复制代码
{
  "title": "string",
  "content": "string",
  "author": "string"
}
  • 功能 :接收博客标题、内容和作者信息,创建一篇新博客并返回创建结果。 - 目标:测试该接口在高并发场景下的性能,获取 QPS 和 RT。

2. 使用 JMeter 测试 QPS

JMeter 是一款强大的开源性能测试工具,适合模拟高并发请求以评估接口性能。以下是使用 JMeter 测试博客新增接口 QPS 的步骤。

2.1 配置 JMeter 测试计划

  1. 创建线程组: - 打开 JMeter,添加一个线程组(Thread Group)。 - 设置线程数(并发用户数,例如 100)、循环次数(例如 10 次)和 Ramp-up 时间(例如 10 秒,控制线程启动速度)。 - 这意味着 JMeter 将在 10 秒内启动 100 个线程,每个线程循环发送 10 次请求,总计 1000 次请求。

  2. 添加 HTTP 请求 : - 在线程组下添加 HTTP 请求(HTTP Request)。 - 配置接口信息: - 协议:httphttps - 服务器地址:例如 localhost:8080 - 路径:/api/blog/create - 方法:POST - 请求体:填写 JSON 数据,如: json { "title": "Test Blog ${__Random(1,1000)}", "content": "This is a test blog content.", "author": "TestUser" } (使用 ${__Random(1,1000)} 动态生成标题,避免重复数据影响测试)。

  3. 添加 HTTP 头管理器 : - 配置请求头,例如: - Content-Type: application/json - 如果需要认证,添加 Authorization 头。

  4. 添加监听器: - 添加"聚合报告"(Aggregate Report)用于查看测试结果。 - 添加"查看结果树"(View Results Tree)用于调试,检查请求是否成功。

  5. 配置其他参数: - 如果接口需要动态参数(如时间戳或随机数),使用 JMeter 的函数或 CSV 数据文件。 - 为避免缓存影响,确保请求数据唯一。

2.2 运行测试

  • 保存测试计划后,点击"运行"按钮启动测试。 - JMeter 将模拟 100 个并发用户发送请求,并记录每个请求的响应时间和状态。

2.3 分析结果

运行完成后,查看"聚合报告",主要关注以下指标: - Samples :总请求数(例如 1000)。 - Average :平均响应时间(RT),单位为毫秒。 - Throughput :即 QPS,表示每秒处理请求数(例如 200 requests/second)。 - Error % :错误率,理想情况下应为 0%。 - 90% Line:90% 请求的响应时间,反映接口性能稳定性。

例如,假设测试结果如下: - 总请求数:1000 - 平均 RT:50ms - QPS:200 - 错误率:0%

这表示接口每秒可处理 200 个请求,平均响应时间为 50 毫秒。

3. 模拟 JMeter 工作流程

为了更直观地理解 JMeter 的工作原理,以下是其工作流程的模拟描述:

  1. 初始化: - JMeter 读取测试计划,解析线程组、HTTP 请求等配置。 - 初始化 100 个线程,准备发送请求。

  2. 线程启动: - 在 Ramp-up 时间(10 秒)内,JMeter 逐步启动 100 个线程,每个线程以均匀间隔(10s / 100 = 0.1s)启动。

  3. 发送请求 : - 每个线程根据配置构造 HTTP POST 请求,包含动态生成的 JSON 数据。 - 请求通过网络发送到服务器(例如 localhost:8080/api/blog/create)。 - JMeter 记录请求发送时间。

  4. 接收响应: - 服务器处理请求并返回响应(成功或失败)。 - JMeter 记录响应时间和状态(例如 HTTP 200 OK)。

  5. 循环执行: - 每个线程重复发送请求 10 次,完成后停止。

  6. 结果收集: - JMeter 汇总所有请求的响应时间、状态和吞吐量。 - 生成聚合报告,计算平均 RT、QPS 和错误率。

  7. 结果展示: - 通过监听器(如聚合报告)展示测试结果,供用户分析。

4. 如何知道接口的 RT 和 QPS?

RT 和 QPS 是通过 JMeter 的测试数据计算得出的,具体方法如下:

4.1 响应时间(RT)

  • 定义 :RT 是从发送请求到收到完整响应的时间,单位为毫秒。 - 计算方法 : - JMeter 记录每个请求的开始时间和结束时间。 - 单个请求的 RT = 结束时间 - 开始时间。 - 平均 RT = 所有请求 RT 之和 / 请求总数。 - 例如,1000 个请求的总响应时间为 50,000ms,则平均 RT = 50,000 / 1,000 = 50ms。 - 查看方式:在聚合报告中,Average 列显示平均 RT,90% Line 显示 90% 请求的 RT。

4.2 每秒查询率(QPS)

  • 定义 :QPS 表示接口每秒处理的请求数,反映吞吐量。 - 计算方法 : - QPS = 总请求数 / 总测试时间(秒)。 - 例如,1000 个请求在 5 秒内完成,则 QPS = 1,000 / 5 = 200。 - JMeter 的 Throughput 指标直接显示 QPS。 - 影响因素 : - QPS 受服务器性能、并发用户数和 RT 影响。 - 根据 Little's Law(小's 定律):QPS ≈ 并发用户数 / 平均 RT(秒)。 - 例如,100 个并发用户,平均 RT 为 0.05 秒,则 QPS ≈ 100 / 0.05 = 2000(理论值,实际受服务器限制)。 - 查看方式:在聚合报告中,Throughput 列显示 QPS(单位为 requests/second)。

4.3 注意事项

  • 错误率 :如果错误率较高(如 5%),QPS 和 RT 数据可能不准确,需检查接口或测试配置。 - 动态数据 :测试中需模拟真实场景(如动态标题),避免数据库或缓存影响结果。 - 服务器资源 :QPS 和 RT 受服务器 CPU、内存和数据库性能限制,需监控服务器状态。 - 多次测试:为确保结果稳定,运行多次测试,取平均值。

5. 总结

通过 JMeter 测试博客新增接口,我们可以高效测算其性能表现: - RT :通过记录每个请求的响应时间,计算平均值和分位数(如 90% Line)。 - QPS :通过总请求数除以测试时间得出,反映接口吞吐量。 - 工作流程:JMeter 通过线程组模拟并发用户,发送 HTTP 请求,收集响应数据并生成报告。

例如,假设测试结果为平均 RT 50ms、QPS 200,表明接口性能良好,但若需支持更高并发,可能需优化服务器或数据库。

希望这篇文章能帮助你理解如何使用 JMeter 测试接口性能!如果有更多问题,欢迎随时交流。

相关推荐
JZC_xiaozhong11 分钟前
制造企业如何通过实现数据统一?
大数据·spring boot·后端·制造·mdm·主数据管理·数据集成与应用集成
uhakadotcom1 小时前
Python中orjson、json、json5三大JSON库简单对比与实用教程
后端·面试·github
南雨北斗1 小时前
Docker部署的优缺点
后端
嶂蘅1 小时前
OK!用大白话说清楚设计模式(二)
前端·后端·面试
AronTing2 小时前
03-Spring Cloud Gateway 深度解析:从核心原理到生产级网关实践
后端·面试·架构
liyanchao20182 小时前
java远程debug调试
后端
异常君2 小时前
Java 锁进化论:synchronized 的底层原理与锁优化技术详解
java·后端
谢尔登2 小时前
【Sequelize】迁移和种子
后端·express
快乐源泉2 小时前
【设计模式】适配器,已有功能扩展?你猜对了
后端·设计模式·go
玛奇玛丶2 小时前
坑爹的urlencode
后端