View a markdown version of this page

AWS 上的分布式负载测试的工作原理 - AWS 上的分布式负载测试

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

AWS 上的分布式负载测试的工作原理

以下详细分解显示了运行测试场景所涉及的步骤。

测试工作流

image3

  1. 您可以使用 Web 控制台向解决方案的 API 提交包含配置详细信息的测试场景。

  2. 测试场景配置以 JSON 文件 s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json () 的形式上传到亚马逊简单存储服务 (Amazon S3)。

  3. AWS Step Functions 状态机使用测试 ID、任务计数、测试类型和文件类型作为 AWS Step Functions 状态机输入来运行。如果已安排测试,它将首先创建一个 CloudWatch 事件规则,该规则将在指定日期触发 AWS Step Functions。有关计划工作流程的更多详细信息,请参阅本指南的测试计划工作流程部分。

  4. 配置详细信息存储在场景 Amazon DynamoDB 表中。

  5. 在 AWS Step Functions 任务运行器工作流程中, task-status-checkerAWS Lambda 函数检查亚马逊弹性容器服务 (Amazon ECS) 任务是否已经在使用相同的测试 ID 运行。如果发现具有相同测试 ID 的任务正在运行,则会导致错误。如果 AWS Fargate 集群中没有运行 Amazon ECS 任务,则该函数将返回测试 ID、任务计数和测试类型。

  6. 任务运行器 AWS Lambda 函数获取上一步中的任务详细信息,并在 AWS Fargate 集群中运行 Amazon ECS 工作线程任务。Amazon ECS API 使用该 RunTask 操作来运行工作线程任务。启动这些工作线程任务,然后等待领导者任务的启动消息以开始测试。每个定义的 RunTask 操作限制为 10 个任务。如果您的任务计数大于 10,则任务定义将多次运行,直到所有工作人员任务都已启动。该函数还会生成一个前缀来区分结果解析 AWS Lambda 函数中的当前测试。

  7. task-status-checkerAWS Lambda 函数检查所有的 Amazon ECS 工作线程任务是否都使用相同的测试 ID 运行。如果任务仍在置备,则它会等待一分钟,然后再次检查。所有 Amazon ECS 任务运行后,它会返回测试 ID、任务计数、测试类型、所有任务 IDs 和前缀,并将其传递给任务运行器函数。

  8. 任务运行器 AWS Lambda 函数再次运行,这次是启动单个 Amazon ECS 任务来充当领导节点。此 ECS 任务向每个工作任务发送启动测试消息,以便同时启动测试。

  9. task-status-checkerAWS Lambda 函数再次检查 Amazon ECS 任务是否使用相同的测试 ID 运行。如果任务仍在运行,它会等待一分钟,然后再次检查。一旦没有正在运行的 Amazon ECS 任务,它就会返回测试 ID、任务计数、测试类型和前缀。

  10. 当任务运行器 AWS Lambda 函数在 AWS Fargate 集群中运行 Amazon ECS 任务时,每个任务都会从 Amazon S3 下载测试配置并开始测试。

  11. 测试运行后,每个任务的平均响应时间、并发用户数、成功请求数和失败请求数将记录在 Amazon 中, CloudWatch 并可在 CloudWatch 控制面板中查看。

  12. 如果您在测试中包含实时数据,则解决方案会 CloudWatch 使用订阅筛选器筛选实时测试结果。然后,该解决方案将数据传递给 Lambda 函数。

  13. 然后,Lambda 函数会对收到的数据进行结构化处理,并将其发布到 AWS IoT Core 主题中。

  14. Web 控制台订阅测试的 AWS IoT Core 主题,并接收发布到该主题的数据,以便在测试运行时绘制实时数据。

  15. 测试完成后,容器镜像会将一份详细报告作为 XML 文件导出到 Amazon S3。每个文件都有一个 UUID 作为文件名。例如,s3://dlte-bucket/test-scenarios/ <$TEST_ID> /results/ <$UUID > .json。

  16. 当 XML 文件上传到 Amazon S3 时,结果解析器 AWS Lambda 函数读取以前缀开头的 XML 文件中的结果,然后解析所有结果并将其汇总为一个汇总结果。

  17. 结果解析器 AWS Lambda 函数将汇总结果写入亚马逊 DynamoDB 表。

MCP 服务器工作流程(可选)

如果您部署了可选的 MCP 服务器集成,AI 代理可以通过以下工作流程访问和分析您的负载测试数据:

MCP 服务器架构

显示与 DLT 组件集成的 MCP 服务器架构
  1. 客户互动-客户通过 AWS Gateway 托管的 MCP 终端节点与 DLT 的 MCP 进行交互。 AgentCore AI 代理连接到此端点以请求访问负载测试数据。

  2. 授权- AgentCore Gateway 处理针对解决方案 Cognito 用户池应用程序客户端的授权。网关会验证用户的 Cognito 令牌,以确保他们有权访问 DLT MCP 服务器。授权用户将获得访问权限,代理工具访问权限仅限于只读操作。

  3. 工具规格 —— AgentCore 网关连接到 DLT MCP 服务器 Lambda 函数。工具规范定义了 AI 代理可用于与您的负载测试数据进行交互的可用工具。

  4. 只读 API 访问权限-Lambda 函数的范围仅限于通过现有 DLT API Gateway 终端节点进行只读 API 访问。该函数提供四个主要操作:

    • 列出方案-从 DynamoDB 场景表中检索测试场景列表

    • 获取场景测试结果-访问来自 DynamoDB 和 S3 的特定场景的详细测试结果

    • 获取 Fargate 负载测试运行器-查询有关在 ECS 集群中运行 Fargate 任务的信息

    • 获取可用的区域堆栈-从中检索有关已部署的区域基础设施的信息 CloudFormation

MCP 服务器集成利用现有的 DLT 基础架构(API Gateway、Cognito、DynamoDB、S3),为基于人工智能的分析和见解提供对测试数据的安全、只读访问权限。