AWS 上的分布式负载测试
将介绍 AWS 上的分布式负载测试,这是一种模拟到单个终端节点的数千个并发连接的解决方案。 对于任何对应用程序开发和性能进行者来说,这是非常有用的工具。
到底要测试什么?
想象一下,你是一个开发人员,你已经建立了世界上最伟大的应用程序(或者可能是你曾经建立过的最伟大的应用程序)。 作为开发人员,您确信它工作正常,因为您已经完成了单元和功能测试。 接下来您需要了解的是,这是否将在生产中执行,并且要大规模执行? 可扩展性非常重要。 负载测试应用程序可以被视为与功能测试相同,但只需将负载应用于您的应用程序并观察会发生什么。 一个用户的测试和一千人测试是有区别的。
该解决方案构建了一个框架,您可以在该框架中使用 弹性容器服务 来启动容器,从而创建数百个连接到您的端点,并可以启动数百个这些容器。 下面显示了 AWS上的 D 分发负载测试 的登录页面。
从图中可以看到,有一个指向 CloudFormation 模板的链接,该模板将在用户帐户中通过单击几下(详细的部署指南)启动解决方案。 View 部署指南是一份详细指南,提供有关在亚马逊云科技 (AWS) 云中的 AWS 上 部署 分布式负载测试的架构注意事项和配置步骤的说明。 源代码可在 GitHub 上提供,如果用户想要将其取走并根据自己的需求和要求对其进行自定义。 体系结构图表示解决方案的整体基础结构,其中包括前端和前端。
AWS 前端
考虑前端时:有一个 Web 控制台和一个 UI,用户可以用它来与解决方案进行交互。 还有一个 API,它允许您创建测试、查看测试状态、重新运行测试和删除测试操作。 UI 来自云表单模板。 这是用户实际开始配置测试本身的地方。
AWS 后端
后端包括两件事:有一个 Docker 管道,然后是实际的测试引擎本身。 Docker 管道的来源是解决方案使用一种称为金牛座的开源软件。 Docker 集线器上有用户可以使用的 Docker 映像。 这允许用户生成数百个 到端点的并发连接。 它还支持 JMeter 和 Gatling,这是其他测试工具。 这是图像的实际测试部分,这是要执行测试的应用程序,并且以 Docker 映像的形式出现。 后端管道将为我们提供该图像包,并将其推至客户帐户中的 S3。 然后,CodePipeline 和 CodeBuild 用于生成该映像,并在弹性容器服务中注册。
实际测试在 AWS Fargate 中进行。 这是一项 托管服务 ,可让您在 Elastic 容器服务上运行容器,而无需担心网络或下划线基础设施。 它实际上只是启动一个任务, 运行你想要的其他一切都被处理的容器数量。 此外,我们有一个 Lambda 函数,该函数将接受来自 API 的请求,这就是实际运行测试的函数。 它将在 S3 中存储测试模板。 它将存储我们在 Dynamo 中收集的所有信息,然后我们使用 SQS 在 AWS Fargate 中排队处理这些任务,以便我们开始启动容器。
配置 AWS 测试
下面,我们将介绍如何配置测试的前端。
- 用户点击”创建测试“按钮
- 用户给一个 名称、说明、 任务计数(它是要运行的容器数), 并发 (它是每个容器的数字。要创建多少并发连接), 启动 (从开始到最多到并发连接数,我多久), 坚持 (我要坚持多久?
- 方案:正在测试的 HTTP 终结点(当前 AWS 支持单端点 )、HTTP 方法(AWS 支持 GET、PUT、POST、删除 操作)、HTTP 标头、正文有效 负载(可以解析标头和有效负载)。
下面提供了当前测试 运行的 屏幕截图:
测试的细节已经提供。 在此特定示例中,已询问 20 个容器,正在运行 20 个容器。 一旦在后端完成,每个容器将运行测试,采取的结果,然后存储在我们的后端Lambda功能S3的XML文件的形式。 一旦所有的容器都完成了,我们将获取这些信息并将其聚合,将所有这些信息传递到 Dynamo 中。
下面,有三个页面的屏幕截图, 表示 测试结果。
如果用户查看已完成的测试,则会显示摘要;测试结果是平均响应时间、延迟、CloudWatch 指标,以便我们可以看到我们的表现、许多其他数据点以及 结果历史记录。
想象一下,您可以运行一次,在 API 上的端点上进行一些微调,然后再次重新运行测试,看看这如何缩短响应时间,以便开发人员能够迭代并查看他们的结果随时间推移 改进其应用程序的制作. 最重要的是,他们看到了大规模的表现。
这是对 AWS 分布式负载测试的深入探讨。 此解决方案消除了生成负载以大规模测试应用程序的所有复杂性。
AWS 自动缩放
自动缩放是云计算中使用的一种方法,通过服务器场中的许多计算资源(通常根据活动服务器的数量进行度量)根据服务器场上的负载自动缩放。 AWS 自动扩展有助于实现应用程序的水平可扩展性。 它有助于实现高可用性、扩展和缩减 EC2 容量、保持所需的容量、根据需求无缝增加/减少容量,从而实现成本优化。 它适用于 ELP 和云观察。
创建弹性负载均衡器
下图显示了有助于理解基础知识的一般结构。
创建弹性负载均衡器
在创建和设置启动配置和自动扩展之前,我们需要创建我们的弹性负载平衡器 (ELB),这是 AWS 的服务提供商,可在其控制的健康 EC2 实例中均匀分布传入流量。 健康是这里的关键字。 弹性负载均衡器定期执行可配置的运行状况检查,并 决定将流量发送到何处。 下面的屏幕截图是 EC2 仪表板的标题。
在这里,我们的目标是在云中使用 EC2 虚拟服务器。 如下所示,在网络 和安全下,我们选择负载 均衡器。
之后,用户点击”创建负载 均衡器”按钮 。
用户提供名称。 在此特定示例中,我们将” 创建内部负载均衡器”保持未选中 状态。 这会将 DNS 名称引导到公共 IP 地址。 如果选中,DNS 名称将指向专用 IP。 将检查启用高级 VPC 配置,以便我们在稍后步骤中将子网分配给 ELB。 侦听器配置允许将传入 ELB 流量映射到 EC2 实例端口。 默认端口 80 映射有助于我们的应用程序。
配置运行状况检查
下一步是配置运行状况 检查。
配置运行状况检查:选项
在这里,我们的选项包括标准的HTTP,TCP,HTTPS和SSL。 在我们的示例中,我们将坚持到 HTTP 并定向到 robots.txt 文件。 如果我们的 Web 服务器无法满足静态请求,那么我们可以放心地假设实例有问题,在实例正常运行之前,不应向其发送进一步的流量。 在高级详细信息下的当前设置下,每 30 秒将检查一次 EC2 实例。 它有 5 秒的时间响应请求。 在分配的时间中未响应意味着实例可能不正常。 连续两次不正常检查将使 EC2 实例退出服务状态。 再次变得健康。 它必须通过 10 个连续运行状况检查,然后才能开始接收流量。 这些阈值适合我们的应用。
选择子网/区域
从”子网”选项中选择如下所示。
我们将添加我们为 Web 服务器创建的每个子网。 值得一提的是,我们每个可用性区域只能添加一个子网。
分配安全组
下面是分配安全组外观的屏幕截图。
我们需要为我们的ELB选择一个安全组,因此对于此示例,我们将选择预配置的 ELB 安全组。
添加 EC2 实例
下面是显示如何添加 EC2 实例的屏幕截图。
在此步骤中,我们需要确保检查启用跨区域负载平衡。 没有它,我们的高可用性设计是无用的。 还应检查启用连接排水,以确定当实例未注册或被宣布为不健康时如何处理流量。
创建负载均衡器审核页面
评论页面如下所示。 从这里,您可以查看您的选择,并在需要时进行任何其他更改。
现在,ELB 已创建。 完成后,我们准备创建自动缩放策略的启动配置。 创建自动缩放策略也很容易,因此,用户可以自己完成此过程。
LoadView 与竞争:负载视图脱颖而出的原因
本节提供了其他流行的负载测试工具和解决方案与负载视图之间的高级比较。 并非所有负载测试工具都是相等的。 尽管开源工具通常不需要前期成本和投资,这可能使它们成为易于使用的选项,但最好了解是什么使 LoadView 比其他工具更易于使用。
阿帕奇 · 杰米
Apache JMeter 是一种开源软件,用于负载测试功能行为和测量 Web 应用程序的性能。 接下来,我们将重点介绍 JMeter 的利弊。
阿帕奇 JMeter 优势
- 平台独立。 JMeter 可以在 Mac、Windows 和 Linux 等任何操作系统中运行。
- 开源。 该工具是开源的,这意味着它可以免费使用。 软件开发人员还可以对其进行修改和配置,从而产生很大的灵活性。 开发人员可以自定义 JMeter,将自动化测试应用于 JMeter。
- 功能. 使用 JMeter,用户可以执行任何他们想要的测试 – 负载测试、压力测试、功能测试、分布式测试等。
- 报告. JMeter 提供许多报表和图表 – 图表、图形和树视图。 此外,还支持用于报表的 HTML、JSON 和 XML 格式。
- 支持许多协议。 JMeter 支持 FTP、HTTP、LDAP、SOAP、JDBC 和 JMS。
- 负载生成容量。 该软件具有无限的负载生成能力。
- 执行。 它易于执行。 用户只需安装Java、下载JMeter并上传JMeter脚本文件。
分析报告。 对于经验不足的工程师和用户来说,结果很容易理解,并且还允许测试人员进行深入分析。
阿帕奇 JMeter 缺点
- 不友好用户。 您必须编写大量脚本,因此它与其他工具一样不具有用户友好性。 它可以令人困惑。 为了能够执行测试,用户需要编写脚本,这可能很难,令人困惑,它导致软件不用户友好。
- 缺乏对桌面应用程序的支持。 JMeter 是测试 Web 应用程序的理想之选,但它不适合桌面应用程序测试。
- 内存消耗。 JMeter 能够模拟重负载,可视化吸收大量内存的测试报告,导致内存在大负载下运行。
- 没有 JavaScript 支持。 JMeter 不是浏览器,因此它只运行或模拟真正的浏览器。 它不支持 AJAX 和 JavaScript,因此会影响测试的效率。 您无法正确测量客户端的性能(有关 JMeter 利弊的更多信息,请查看我们的终极指南性能测试与 JMeter)
LoadNinja
LoadNinja 是云中的负载测试平台,允许您可靠地确定网站和 Web 应用程序的性能,而无需使用任何脚本。 LoadNinja 是从零开始到介质构建和设计的,是传统基于协议的负载测试工具面临的挑战。 我们将讨论 LoadNinja 的一些亮点和限制。
LoadNinja 优势
- 使用真正的浏览器
- 基于浏览器的指标,具有分析和报告功能。
- VU 调试器. 允许开发人员在测试期间查找和隔离错误。
- VU 检验器. 使用户了解虚拟用户在测试运行时如何与其网页和应用程序进行交互。
- 记录工具。 类似于 EveryStep Web 记录器,我们将在下面更详细地介绍,允许指向和单击脚本。
LoadNinja 缺点
- 依赖于 AJAX。 如果禁用或不支持 JavaScript,将不起作用。
- 动态内容。 对于基于 AJAX 的应用程序,动态内容不会可见。
- 延迟。 延迟问题可能更高,只是基于 AJAX 的异步行为。
- 成本。 可以是昂贵的,相比其他工具在市场上和包括的功能。
负载运行器
它是来自微焦点的软件测试工具。 它用于测试应用程序、测量系统行为和负载下的性能。 它可以同时使用应用软件模拟数千个用户。 让我们快速了解一下 LoadRunner 的流行之处以及解决方案的一些缺点。
负载运行器的优势
- 重播和录制功能(除了自动关联)。
- 除了专有协议(如远程桌面、Citrix 和大型机)之外,还支持各种协议。
- 该软件可以尝试对瓶颈执行自动分析。
- 与 HP ALM、QTP 等基础设施集成。
该软件可以在资源可用性(RAM、CPU 等)方面监视自身和受测试的应用程序。
负载运行器的缺点
- LoadRunner 是一个昂贵的软件测试工具。 它最近发布了免费试用版,但它不能简单地下载使用。
- LoadRunner 的负载生成能力有限。 用户不能使 LoadRunner 工具重载,因为用户或线程太多。 (如果用户正在寻找性能测试工具,这将执行繁重的测试,以及太多的用户和线程组,那么 LoadRunner 将不是最佳选择)。
- 执行是复杂的。 它为每个用户创建一个线程。
- 在分析报告方面,由 HP 分析分析分析以原始格式分析的信息以生成各种图形。
LoadView
该软件是基于云的 压力和负载测试工具,适用于网页、Web 应用程序、API 甚至流媒体。 由于 LoadView 基于云,工程师和测试人员可以根据负载要求快速旋转和缩放负载测试。 用户可以根据要求产生尽可能多的流量。 在此过程中,用户无需处理额外的基础设施,这比 JMeter 等开源工具具有巨大优势,后者要求用户从自己的计算机运行测试,并且无法扩展到 LoadView 提供的级别。 此外,该软件还生成一系列 HTTP GET/POST 请求来测试 Web 服务器和 Web ABI。
LoadView 优势
- 没有长期定价义务,附带即用即付定价模型,因此客户可以随时加载测试。
- 支持记录动态和丰富的互联网应用程序 (RIA) 的用户场景,如 Java、HTML5、Flash、Vue、角、反应、PHP、银光和红宝石(以及其他许多)。 如果可以在用户的浏览器中呈现,则”每个步骤”Web 记录器都支持它。
- 用户可以利用来自众多全球地理位置的服务器来模拟预期的用户群。
- 创建负载测试脚本,甚至无需触摸代码行。
- 在真实浏览器中进行基于云的负载测试。
- 在 40 多个桌面/移动设备和浏览器上测试兼容性。
- 超过 20 个全球负载喷油器地理位置。
- 诊断瓶颈,确保可扩展性,并确定整体性能。
- 性能报告、容量规划指标、性能仪表板等。
总结本节, 表明 LoadView 比我们介绍的其他其余工具更易于使用、更高效。
总结:AWS 负载测试 + 负载平衡和最佳实践
在这篇文章中,我们介绍了如何使用 AWS 执行分布式负载测试,这澄清了生成负载以大规模测试应用程序的所有复杂问题。 AWS 负载测试用于帮助用户构建和复制数千个连接用户,实现事务数。 我们还介绍了 AWS 中的自动缩放功能,包括自动缩放的定义、如何创建弹性负载均衡器以启动配置以及设置自动缩放。 我们还查看了市场上其他一些流行的负载测试工具,以及为什么 LoadView 比其他工具更易于使用。
要更深入地了解 LoadView 与当今市场上的其他负载测试工具和解决方案相比,请访问我们的 备选版 页面,了解全面的并排比较和信息。
立即开始使用 LoadView! 注册 免费试用版,并在开始时获得免费的负载测试。