6

我们有在嵌入了 sql server express 的 Windows 7 上运行的 .net 客户端。这些运行断开连接,并且每隔一段时间就会拨入中央服务器并转储他们的信息并下拉相关的新信息。我们想对整个分布式系统进行压力测试,并试图想出一种经济有效的方法来做到这一点。我们的一位开发人员有使用亚马逊云并启动 1000 个客户端的想法,但他们只支持 Windows Server O/S,如果您必须多次重新运行测试,这可能会花费一些钱,这很可能.

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

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

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

谢谢,

超级蒂米

4

3 回答 3

1

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

于 2011-02-28T20:05:13.850 回答
0

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

许多负载测试工具支持从云生成负载(包括我们的 - Web Performance Load Tester - 以及 BrowserMob、LoadStorm 等其他工具),因此请从这些工具开始评估 - 这将使模拟 1000 个虚拟用户变得非常容易且经济实惠,因为出色地。

于 2011-03-07T14:00:31.217 回答
0

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

开发人员通常拥有相当笨拙的机器,并且通常有一些。这样您就不会破坏测试机器并可以监控发生的情况。

理想情况下,您将能够在开发机器上使用 Visual Studio 2010 负载测试代理。该工具将使您能够监控测试中所有机器的统计数据,并很好地了解您的服务器如何响应。

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

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

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

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

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

于 2011-02-28T22:24:18.487 回答