使用 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 测试接口性能!如果有更多问题,欢迎随时交流。

相关推荐
程序员爱钓鱼2 分钟前
Go语言实战案例-创建模型并自动迁移
后端·google·go
javachen__7 分钟前
SpringBoot整合P6Spy实现全链路SQL监控
spring boot·后端·sql
uzong6 小时前
技术故障复盘模版
后端
GetcharZp6 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程6 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研6 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi7 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国8 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy8 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack8 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt