拥有数千个虚拟用户的 Node.JS 负载测试工具

Posted

技术标签:

【中文标题】拥有数千个虚拟用户的 Node.JS 负载测试工具【英文标题】:Node.JS Load Testing tools with thousand of virtual users 【发布时间】:2021-03-03 14:47:28 【问题描述】:

目标是在 AWS 上对 Node.JS 服务器进行负载测试。

服务器应该支持每秒更多的不同用户峰值 (20K) 事件。 我尝试了一些负载测试工具,例如 Artillery 和 LoadTest。不幸的是,通过设置总共 64G 的 16 个内核的 Kuberense 集群并没有获得超过 3K 的 VU。 结果是在 100% CPU 利用率下,每个 Pod 的 VU 少于 60 个。当我尝试在 50 个 pod 上获得至少 200 个 VU 时

可能任何人都知道 CPU 消耗较少的负载测试工具。

【问题讨论】:

AWS 方面的一些相关文档“AWS 上的分布式负载测试”docs.aws.amazon.com/solutions/latest/… 【参考方案1】:

如果您只有一台无法扩展的物理(或虚拟)服务器,那么使用 k8s 等容器编排工具没有多大意义,因为它不会增加任何价值,只会消耗资源。

关于负载测试工具的资源消耗,始终需要最低限度,例如:

内存中的操作系统线程占用空间 请求和响应大小 语言运行时所需的额外资源

根据我之前的经验,Tsung 以最少的资源提供最大的吞吐量。

但是,根据您的测试性质,您可能需要考虑其他工具,例如,请参阅Open Source Load Testing Tools: Which One Should You Use? 文章了解更多选项。

将工具选择范围缩小到支持应用程序负载测试所需的网络协议的工具,不要忘记大多数工具都假设性能调整。

另外不要忘记,真正的用户不会不停地锤击应用程序,他们需要一些时间来"think" 在操作之间所以首先要确保你的虚拟用户表现得像一个真正的用户,它可能是如果您只需要使工作负载更加现实并且当前的硬件/软件设置就足够了

【讨论】:

谢谢你,Dmitri,你的观点非常有帮助。一些更正,k8s 设置由 4 个虚拟节点组成。总资源16核64G。当服务器利用率仅为 50% CPU 时,我设法获得的吞吐量是 3K 请求。所以我认为我可以获得更好的吞吐量,克服客户端瓶颈

以上是关于拥有数千个虚拟用户的 Node.JS 负载测试工具的主要内容,如果未能解决你的问题,请参考以下文章

JUnit 负载测试数千个与服务器的并发套接字连接

开源负载测试工具k6比JMeter更容易的5件事

开源负载测试工具k6比JMeter更容易的5件事

使用 Visual Studio 2008 进行负载测试:分析结果的麻烦

负载和尖峰测试之间的区别

Node.js Express 应用程序在负载测试下花费太多时间来处理出站 HTTP 请求