You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JMeter对含双POST请求的AWS API开展负载与性能测试

JMeter实现AWS API Gateway双POST链路负载测试落地方案

前置准备

  • 确认两个POST接口的完整路径、鉴权规则:AWS API Gateway默认要求Content-Type: application/json请求头,若开启IAM鉴权、自定义API Key鉴权,提前准备好对应凭证
  • 准备测试参数集:多并发场景下提前将propno、apikey、user三类参数整理为CSV文件,避免单账号、单资源ID触发接口限流
  • 本地安装JMeter 5.6及以上版本,若接口开启IAM鉴权,提前安装AWS SigV4授权插件

测试链路搭建

基础配置

  • 新建测试计划,添加线程组,根据负载目标配置并发线程数、Ramp-Up爬升时长、循环次数;做稳定性测试时可直接配置调度器,设置持续压测时长
  • 在线程组下添加HTTP信息头管理器,统一配置公共请求头:
    Content-Type: application/json
    # 自定义鉴权头、签名头统一在此处添加
    
  • (可选)需要参数化时,在线程组下添加CSV数据文件设置,导入提前准备的CSV参数文件,给每列映射变量名propno、apikey、user,配置文件读完后自动循环读取即可

第一个POST接口配置(提交申请获取参考编号)

  • 在线程组下添加HTTP请求采样器,命名为「第一步-提交请求获取reference」
  • 采样器基础配置:
    • 协议选https(AWS API Gateway默认支持HTTPS协议)
    • 服务器地址填API Gateway的调用域名,格式类似{api-id}.execute-api.{region}.amazonaws.com
    • 路径填第一个POST接口的资源路径,例如/v1/submit
    • 请求方法选择POST
    • 消息体填入JSON请求参数,参数化部分用${变量名}替换:
      {
        "propno": "${propno}",
        "apikey": "${apikey}",
        "user": "${user}"
      }
      
  • 给该采样器添加响应断言,校验响应内容包含"status":"ok",接口返回异常时直接终止当前线程的后续流程,避免无效请求
  • 给该采样器添加JSON提取器,配置规则如下:
    • 引用名称设置为refno,供后续接口直接调用
    • JSON路径表达式填$.reference
    • 匹配数字填1,取第一个匹配的返回值
    • 默认值填REF_EXTRACT_FAILED,提取失败时方便定位问题

第二个POST接口配置(传入参考编号获取最终结果)

  • 在第一个采样器后添加第二个HTTP请求采样器,命名为「第二步-传入refno获取最终结果」
  • 基础配置和第一个采样器保持一致,路径填第二个POST接口对应的资源路径,请求方法选POST
  • 消息体填入JSON请求参数,直接引用前一步提取的refno变量:
    {
      "refno": "${refno}",
      "apikey": "${apikey}",
      "user": "${user}"
    }
    
  • (可选)给该采样器添加响应断言,根据业务实际返回的成功标识配置校验规则,例如校验返回包含指定业务字段,避免将异常响应统计为成功请求

监听器配置

  • 调试阶段添加「查看结果树」,可逐次查看每个请求的入参、返回值、变量提取结果,确认链路跑通;正式压测时关闭该监听器,避免占用过多客户端资源
  • 添加「聚合报告」,统计两个接口的平均响应时间、95/99分位响应时间、吞吐量、错误率等核心性能指标
  • 添加「响应时间图」,直观观测压测过程中接口响应时间的波动趋势

AWS API Gateway适配注意事项

  • 接口开启IAM鉴权时,无需手动编写签名逻辑,直接在HTTP请求的授权配置中选择AWS Signature类型,填入对应AK/SK、区域信息,服务名填execute-api即可
  • 提前确认API Gateway的账号配额:默认Regional类型API的限流阈值是10000RPS/账号/区域,若压测流量超过该阈值,提前提交配额申请,否则会触发429限流,影响测试结果准确性
  • 若第二步接口为异步查询逻辑(提交第一步请求后reference不会立刻生效),可在两个请求之间添加常数定时器配置轮询间隔,或搭配While控制器设置最大重试次数,避免第一步请求刚处理完成就调用第二步,返回查询不到的错误

压测执行建议

  • 先配置1个线程、循环1次做链路调试,通过查看结果树确认两个请求返回正常、refno提取和传参正确,再逐步提升并发数
  • 正式压测使用JMeter非GUI模式启动,减少JMeter本身的性能损耗,启动命令示例:
    jmeter -n -t api-test.jmx -l test-result.jtl
    
  • 压测过程中同步查看AWS CloudWatch中API Gateway的监控指标,和JMeter本地统计的指标做交叉验证,排除客户端网络、JMeter本身性能瓶颈导致的结果偏差

内容的提问来源于stack exchange,提问作者vincent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:27:17