View a markdown version of this page

创建测试场景 - AWS 上的分布式负载测试

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建测试场景

创建测试场景包括四个主要步骤:配置常规设置、定义场景、调整流量模式以及查看配置。

步骤 1:常规设置

配置负载测试的基本参数,包括测试名称、描述和常规配置选项。

测试识别

  • 测试名称(必填)-测试场景的描述性名称

  • 测试描述(必填)-有关测试目的和配置的其他详细信息

  • 标签(可选)-添加最多 5 个标签来对您的测试场景进行分类和整理

日程安排选项

配置测试的运行时间:

  • 立即运行-创建后立即执行测试。

  • 运行一次-将测试安排在特定的日期和时间运行。

  • 按计划运行-使用基于 cron 的计划定期自动运行测试。您可以从常用模式(每小时、每天、每周)中进行选择,也可以定义自定义 cron 表达式。有关可接受的 cron 格式、支持的模式和约束条件的详细信息,请参阅开发者指南中的 Cron 表达式参考

调度工作流程

安排测试时,会出现以下工作流程:

  • 计划参数通过 Amazon API Gateway 发送到解决方案的 API。

  • API 将参数传递给 Lambda 函数,该函数创建配置为在指定日期运行的 Amazon EventBridge 计划表。

  • 对于一次性测试(运行一次), EventBridge 计划程序计划在指定的日期和时间调用 L api-services ambda 函数,由该函数执行测试。

  • 对于重复测试(按计划运行),计划 EventBridge 程序计划会立即按照 cron 或速率表达式定义的节奏调用 api-services Lambda 函数,直到到期日。

实时数据

选中 “包括实时数据” 复选框可在测试运行时查看实时指标。启用后,您可以监控:

  • 平均响应时间。

  • 虚拟用户计数。

  • 成功的请求计数。

  • 失败的请求计数。

实时数据功能提供实时图表,每隔一秒钟聚合数据。有关更多信息,请参阅使用实时数据进行监控

步骤 2:场景配置

定义特定的测试场景并选择您的首选测试框架。

测试类型选择

选择要执行的负载测试类型:

  • 单个 HTTP 端点-使用简单的配置测试单个 API 端点或网页。

  • jMeter-上传 jMeter 测试脚本(.jmx 文件或.zip 存档)。

  • K6-上传 K6 测试脚本(.js 文件或.zip 存档)。

  • Locust-上传 Locust 测试脚本(.py 文件或.zip 存档)。

注意

所有四种测试类型都依赖于第三方组件。该解决方案通过 Taurus 测试自动化框架运行测试,该框架根据测试类型执行 jMeter、K6 或 Locust;单个 HTTP 端点测试将转换为 jMeter 测试计划,由捆绑的 Apache JMeter 运行。在创建测试之前,请查看Third-party 测试框架以了解安全注意事项、许可证信息和修补选项。

HTTP 端点配置

选择 “单个 HTTP 端点” 后,该解决方案会根据您的配置生成 JMeter 测试计划,并使用捆绑的 Apache JMeter 二进制文件执行该计划。配置以下设置:

HTTP 终端节点(必填)

输入您要测试的终端节点的完整 URL。例如 https://api.example.com/users。确保可以从 AWS 基础设施访问终端节点。

HTTP 方法(必填)

为您的请求选择 HTTP 方法。默认值为 GET。其他选项包括POSTPUTDELETEPATCHHEAD、和OPTIONS

请求标头(可选)

在您的请求中添加自定义 HTTP 标头。常见示例包括:

  • Content-Type: application/json

  • Authorization: Bearer <token>

  • User-Agent: LoadTest/1.0

    选择 “添加标题” 以包含多个标题。

车身有效载荷(可选)

为 POST 或 PUT 请求添加请求正文内容。支持 JSON、XML 或纯文本格式。例如:{"userId": 123, "action": "test"}

测试框架脚本

使用 JMeter、K6 或 Locust 时,请上传您的测试脚本文件或包含测试脚本和支持文件的.zip 存档。对于 JMeter,您可以在.zip 存档的/plugins文件夹中包含自定义插件。

重要

尽管您的测试脚本(jMeter、K6 或 Locust)可以定义并发性(虚拟用户)、交易速率 (TPS)、加速时间和其他加载参数,但该解决方案将使用您在测试创建期间在 Traffic Shape 屏幕中指定的值来覆盖这些配置。Traffic Shape 配置控制测试执行的任务计数、并发度(每个任务的虚拟用户数)、加速持续时间和保持持续时间。

第 3 步:流量形状

配置测试期间流量的分配方式,包括多区域支持。

Multi-region 流量配置

选择一个或多个 AWS 区域,按地理位置分配您的负载测试。对于每个选定的区域,请配置:

任务计数

在测试场景中,将在 Fargate 集群中启动的容器(任务)数量。一旦账户达到 “已达到 Fargate 资源” 限制,就不会创建其他任务。

并发

每个任务生成的并发虚拟用户数。建议的限制基于每个任务 2 个 vCPU 的默认设置。并发性受到 CPU 和内存资源的限制。

确定用户数量

容器在测试中可以支持的用户数量可以通过逐步增加用户数量和监控 Amazon 中的性能来确定 CloudWatch。一旦你观察到 CPU 和内存性能已接近极限,你就达到了容器在默认配置(2 个 vCPU 和 4 GB 内存)下可以支持的最大用户数。

校准过程

您可以使用以下示例开始确定测试的并发用户限制:

  1. 创建不超过 200 个用户的测试。

  2. 测试运行时,使用CloudWatch 控制台监控 CPU 和内存:

    1. 在导航窗格的 “容器见解” 下,选择 “性能监控”。

    2. 性能监控页面的左下拉菜单中,选择 ECS 集群

    3. 从右侧的下拉菜单中,选择您的亚马逊弹性容器服务 (Amazon ECS) Container Service 集群。

  3. 监控时,请注意CPU和内存。如果 CPU 未超过 75% 或内存未超过 85%(忽略一次性峰值),则可以对更多用户进行另一次测试。

如果测试未超过资源限制,请重复步骤 1-3。或者,您可以增加容器资源以允许更多的并发用户。但是,这会导致更高的成本。有关详细信息,请参阅《开发人员指南》。

注意

为了获得准确的结果,在确定并发用户限制时,一次只能运行一个测试。所有测试都使用同一个集群, CloudWatch 容器见解会根据集群聚合性能数据。这会导致两个测试同时报告给 Conta CloudWatch iner Insights,从而导致单个测试的资源利用率指标不准确。

有关校准每个引擎的用户数的更多信息,请参阅文档中的校准 Taurus 测试。 BlazeMeter

注意

该解决方案显示每个区域的可用容量信息,帮助您在可用限制范围内规划测试配置。

可用任务表

可用任务表显示每个选定区域的资源可用性:

  • 区域-AWS 区域名称。

  • 每个任务的 vCPU-分配给每个任务的虚拟 CPU 数量(默认值:2)。

  • DLT 任务限制-根据您的账户的 Fargate 按需 vCPU 配额可以创建的最大任务数。新账户的配额通常较低;请在 Service Quotas 控制台中验证您当前的配额,并在需要时申请增加配额。

  • 可用的 DLT 任务-该区域当前可用的任务数,计算方法是您的 DLT 任务限制减去运行 Fargate 任务时已在使用的 vCPU。

要增加每个任务的可用任务或 vCPU 数量,请参阅开发者指南。

测试时长

定义您的负载测试将运行多长时间:

Ramp Up

达到目标并发的时间。在此期间,负载从 0 逐渐增加到配置的并发级别。

等一下

保持目标负荷的持续时间。在此期间,测试将以完全并发的状态继续进行。

步骤 4:审核并创建

在创建测试场景之前,请检查您的所有配置。验证:

  • 常规设置(名称、描述、日程安排)。

  • 场景配置(测试类型、端点或脚本)。

  • 流量形状(任务、用户、时长、区域)。

查看完毕后,选择 “创建” 以保存您的测试场景。

管理测试场景

创建测试场景后,您可以:

  • 编辑-修改测试配置。常见使用案例包括:

    • 调整流量形态以实现所需的交易速率。

  • 复制-复制现有测试场景以创建变体。常见使用案例包括:

    • 更新端点或添加 headers/body 参数。

    • 添加或修改测试脚本。

  • 删除-删除不再需要的测试场景。