负载测试 Azure EventHub

Posted

技术标签:

【中文标题】负载测试 Azure EventHub【英文标题】:Load testing Azure EventHub 【发布时间】:2015-01-17 15:04:45 【问题描述】:

我开发了一个使用 Azure EventHub 的应用程序 - 它声称是用于发布和处理大量事件的非常可扩展的解决方案 - 现在我想对最终解决方案进行负载测试,看看整个系统是否适合我的需求,或者我需要向 EventHub 添加更多吞吐量单位来处理预期的入口。

我的客户正在使用 EventHub 的 HTTP 端点来发布事件,这实际上意味着当客户想要发布事件时,它会将 HTTPS POST 请求发送到一个特殊的 URL,例如:

//mynamespace.servicebus.windows.net/myeventhub/publishers/mypublisher

我可以轻松地从我的本地计算机加载测试此服务(例如使用Apache JMeter),但不幸的是我的本地计算机资源有限,因此我无法生成大负载来测试我的服务。

大负载是什么意思?

我需要测试系统每秒给定数量的请求 - 这个给定的数量应该在 20,000 到 100,000 之间 - 所以在最坏的情况下,我必须以 100,000 个请求/秒来测试它

有多个云负载测试工具可以产生如此大的负载,它们很好 - 但是,当我必须验证我要测试的系统是一个属性时,云中的每个负载测试工具都需要一些验证步骤我的。 (所以负载测试器不会对 WhiteHouse 网站进行 DDoS。)

为了做到这一点,我通常必须在运行测试之前将验证令牌上传到负载测试工具检查的 URL。 不幸的是,在这种情况下,我无法控制 EventHub 的端点,因此我无法将令牌上传到:

//mynamespace.servicebus.windows.net/verificationToken.txt

云中是否有任何负载测试解决方案可以与 Azure EventHubs 一起使用?

如果没有,我如何对基于 EventHub 的服务进行负载测试?

【问题讨论】:

您好,您找到解决此案的方法了吗?我遇到了同样的问题 @polzka90 抱歉回复晚了,我已经有一段时间没有使用这个网站了。最后,我们使用了 flood.io。挺好的,不过我觉得现在成熟多了。 【参考方案1】:

应用程序的性质是什么?这是一个移动应用程序吗?桌面?网络?根据具体情况,您可以将应用程序本身加载到云主机上,然后直接或通过负载测试工具从那里运行它。

另一个选项是,由于您只专注于测试事件中心本身,因此创建一个简单的网页,将 HTTP 发布到事件中心(有一个通过 javascript 执行此操作的示例:https://brentdacodemonkey.wordpress.com/2014/11/18/azures-new-event-hub/),然后通过您首选的负载测试工具从该网页中挖掘出来。

不过,在开始测试之前,请确保在需要时进行批处理。批量发送可以大大提高摄取速度。您还需要确保已配置适合您计划生成的负载的比例单位数量。默认情况下,您被限制为 1mb/s 入站和 2mb/s 出站。如果您觉得 100,000 个事件/秒将超过 1mb,那么您需要确保已增加事件中心吞吐量单位。最后,尽可能异步发送事件。当负载测试遇到发送应用程序的瓶颈并且同步发送事件时,这种情况并不少见,这种瓶颈很容易被解释为事件中心本身的吞吐量问题。

【讨论】:

【参考方案2】:

如何针对端点使用 Azur VM 云测试?看看这个:https://www.visualstudio.com/en-us/get-started/test/load-test-your-app-vs

【讨论】:

以上是关于负载测试 Azure EventHub的主要内容,如果未能解决你的问题,请参考以下文章

Azure 负载测试不报告数据驱动的 url

Azure Devops 负载测试完成后如何发送邮件通知

如何测试托管在Azure Appservice上的SignalR应用(负载+功能结合)?

如何测试托管在 Azure Appservice 上的 SignalR 应用程序(负载 + 功能组合)

Locust 负载测试脚本出错 - 连接中止。',RemoteDisconnected

Visual Studio 云负载测试平均测试时间似乎很长