我可以做些啥来加快我使用 NBomber 的负载测试? (VS LT 250 RPS 轻松;NBomber 最高 25 RPS)
Posted
技术标签:
【中文标题】我可以做些啥来加快我使用 NBomber 的负载测试? (VS LT 250 RPS 轻松;NBomber 最高 25 RPS)【英文标题】:What can I do to speed up my load test using NBomber? (VS LT 250 RPS easily; NBomber maxed with 25 RPS)我可以做些什么来加快我使用 NBomber 的负载测试? (VS LT 250 RPS 轻松;NBomber 最高 25 RPS) 【发布时间】:2021-02-02 20:33:37 【问题描述】:我们一直在使用 Visual Studio 负载测试来运行我们的 .NET Framework 4.7.2 遥测客户端,我们可以在其中设置负载测试,以每秒大约 250 个指标的速率将指标发布到我们的 Rabbit MQ。最近,我们不得不将遥测客户端迁移到 .NET Core,并且需要运行负载测试并验证它是否仍然可以以相同的速率发布指标。现在,Visual Studio 负载测试 (VSLT) 已被弃用,并且不支持 .NET Core 框架,因此我们不得不寻找像 NBomber 之类的东西来代替 VSLT。
关于 NBomber,我似乎无法获得足够的文档或支持,因为我已经尝试了所有我所知道的并且无法让 NBomber 每秒发布超过 25 个指标。同时,我看到了 100% 的 CPU 使用率。
有人有什么见解可以和我分享吗?在此先感谢您的帮助, 田
【问题讨论】:
【参考方案1】:事实证明,我的逻辑很糟糕。一位高级开发人员和朋友与我分享了一些见解,我正在为每次发布的指标初始化遥测客户端。这是 CPU 高消耗的关键,无法达到预期的性能。我正在重新编码我的测试,以便 NBomber 可用于初始化 250 个遥测客户端,在一小时内发布至少 1MM 指标。我昨天运行了一个修复程序,仅使用 1 个遥测客户端或大约 300 RPS 的速率在 56 秒内发布了 17K 指标。我认为 VS LT 很棒,但我认为 NBomber 令人印象深刻。
为使用 NBomber 进行负载测试干杯!! 田
【讨论】:
【参考方案2】:如果 NBomber 的单个实例消耗 100% 的 CPU 并且没有执行必要的负载,您将需要设置另一台机器并在 distributed cluster mode 中运行 NBomber
为什么需要集群?
您已达到一个节点的容量不足以创建相关负载的地步。
您希望将运行多个方案委托给不同的节点。例如,您想通过发送并行读写查询来测试数据库。在这种情况下,一个节点可以发送插入,另一个节点可以发送读取查询。
您想要模拟需要多个节点参与的实际生产负载。例如,您可能有一个节点定期将数据写入 Kafka 代理,而两个节点则不断从 Redis 缓存中读取这些数据。
似乎Microsoft recommends using Apache JMeter™ 也值得一试。 JMeter 能够向各种 MQ 实现发送消息,并且它的文档更简洁,即参见Building a JMS Topic Test Plan
【讨论】:
您好@Dmitri T 感谢您的意见。我添加了一个解决我问题的答案。不确定这是否是正确的方法,但如果不正确,请原谅我。 :-) 再次感谢您的帮助!以上是关于我可以做些啥来加快我使用 NBomber 的负载测试? (VS LT 250 RPS 轻松;NBomber 最高 25 RPS)的主要内容,如果未能解决你的问题,请参考以下文章
IBM Mainframe Assembler 程序在添加 COBOL 调用后显示 CPU 时间和运行时间的极端跳跃。为啥?可以做些啥来加快速度?