如何测试1000个客户端Windows 7客户端

时间:2011-02-28 18:32:39

标签: .net wcf distributed stress-testing windows-7-embedded

我们在Windows 7上运行的.net客户端嵌入了sql server express。这些运行断开连接,每隔一段时间就会拨入中央服务器并转储其信息并下拉相关的新信息。我们希望对整个分布式系统进行压力测试,并试图考虑一种经济有效的方法来实现这一目标。我们的一个开发人员有想法使用亚马逊云并启动1000个客户端,但他们只支持Windows服务器O / S,看起来如果你不得不多次重新运行测试可能会遇到一些钱

我们考虑过在一台机器上模拟1000个客户端,假装有1000个客户端并异步调用所有调用,但如果你在一台机器上运行,你的一些天花板将是RAM和一台机器的处理器与较大的系统相比,所以我不确定它会给我们的图片“真实”。

所有调用都发生在客户端和服务器之间的WCF上。

任何人都有这方面的经验,如果有,你是如何解决的?

感谢,

Super Timmy

3 个答案:

答案 0 :(得分:1)

你看过SOASTA了吗?它们提供基于云的SOA负载测试。

答案 1 :(得分:0)

分而治之,看看你是否可以将目标测试服务器连接到与开发人员相同的交换机上。使用在这些计算机上划分客户端并让每个人都对测试服务器运行。 (坚持使用相同的开关可以消除网络效应,从而扭曲硬件上的结果)

开发人员通常拥有相当多的机器,通常有一些机器。这样你就不会破坏测试机器并监控发生的事情。

理想情况下,您可以在开发计算机上使用Visual Studio 2010 Load Test代理。 该工具使您能够监控测试中所有计算机的统计数据,并提供服务器响应方式的真实情况。

如果运行测试测试的计算机在localhost上托管一个调用所需Web服务的网页可能是进行测试的最佳选择。

这取决于您的开发环境和Visual Studio许可安排的确切性质。

要弄清楚的一个关键事项是每个客户端对WCF Web服务的请求/秒数。获得该数字后,您可以将该数字除以每台测试机器的最大请求数/秒,以确定需要多少台测试机器。

出于负载测试的目的,您不需要拥有Web服务的“实际”客户端。由于Web服务是一个接口,您可以模拟普通客户端的活动,并在没有正常“思考时间”暂停的情况下运行,使您能够测试1000个客户端的负载,而无需运行每个客户端的实例。

E.g。如果每个客户端每分钟访问一次Web服务,总计每秒1000/60 = 16.7次呼叫。如果每次呼叫在3秒内完成,则50个虚拟用户将能够创建相同的负载(50/3 = 16.7)。根据经验,运行Visual Studio负载测试的两台计算机将能够生成负载而不会使CPU过载。

答案 2 :(得分:0)

如果您通过HTTP使用基于文本的协议的WCF(似乎很可能),那么您可以使用许多工具。大多数Web负载测试工具可以通过充当浏览器的代理来记录HTTP流量,这通常也允许从富客户端进行记录。您可能需要对测试用例进行一些额外的自定义,因为这些工具已经过优化以模拟浏览器。我们已经为一些客户完成了这项工作,并且运作良好。

许多负载测试工具支持从云产生负载(包括我们的 - Web性能负载测试器 - 以及其他类似BrowserMob,LoadStorm等),因此开始评估 - 它将使模拟1000个虚拟用户非常容易而且价格实惠。