我们的.net客户端运行在嵌入了sql server express的Windows7上。这些服务器会断开连接,偶尔会拨入一个中央服务器,转储它们的信息,并拉下相关的新信息。我们想要对整个分布式系统进行压力测试,并试图想出一种经济有效的方法来做到这一点。我们的一位开发人员曾想过使用亚马逊云并启动1000个客户端,但他们只支持windows服务器操作系统,而且如果你必须多次重新运行测试,看起来可能会花费一些钱。
我们想过在一台机器上模拟1000个客户端,这将假装有1000个客户端并异步进行所有调用,但如果你在一台机器上运行,那么你的一些上限将是一台机器的RAM和处理器,而不是一个更大的系统,所以我不确定它会给我们提供多“真实”的画面。
所有调用都是通过客户端和服务器之间的WCF进行的。
任何人都有这方面的经验,如果有,你是如何解决的?
谢谢,
超级Timmy
发布于 2011-03-01 04:05:14
你看过SOASTA吗?它们提供基于云的SOA负载测试。
发布于 2011-03-01 06:24:18
分而治之,看看您是否可以将目标测试服务器连接到与您的开发人员相同的交换机。使用将客户端分散到这些机器上,让每个人都可以在测试服务器上运行。(坚持使用相同的交换机可消除网络效应,避免硬件上的结果失真)
开发人员通常有非常糟糕的机器,而且通常也有几台。这样,您就不会破坏测试机器,并且可以监视发生了什么。
理想情况下,您可以在开发机器上使用Visual Studio2010负载测试代理。这个工具将让你能够监控测试中所有机器的统计数据,并给出一个非常好的关于你的服务器如何响应的图片。
如果运行测试的机器在localhost上托管了一个调用所需web服务的网页,则可能是进行测试的最佳选择。
这取决于您的开发环境和Visual Studio许可安排的确切性质。
要弄清楚的一个关键问题是每个客户端每秒会对WCF web服务发出多少请求。一旦你有了这个数字,你就可以将这个数字除以每台测试机器每秒的最大请求数,从而计算出需要多少台测试机器。
出于负载测试的目的,您不需要拥有web服务的“实际”客户端。由于web服务是一个接口,您可以模拟正常客户端的活动并运行它,而不需要正常的“思考时间”暂停,从而使您能够测试1000个客户端的负载,而不需要每个客户端运行的实例。
例如,如果每个客户端每分钟访问web服务一次,则每秒总共1000/60 = 16.7次调用。如果每次调用在3秒内完成,则50个虚拟用户将能够创建相同的负载(50/3=16.7)。根据经验,两台运行Visual Studio负载测试的机器将能够生成负载,而不会使它们的CPU过载。
发布于 2011-03-07 22:00:31
如果您将WCF与基于HTTP的基于文本的协议一起使用(看起来很有可能),那么您可以使用许多工具。大多数Web负载测试工具可以通过充当浏览器的代理来记录HTTP流量,这通常也允许从富客户端进行记录。您可能需要对测试用例进行一些额外的定制,因为这些工具已针对模拟浏览器进行了优化。我们已经为我们的一些客户做到了这一点,而且效果很好。
许多负载测试工具都支持从云中生成负载(包括我们的Web Performance load Tester,以及其他如BrowserMob、LoadStorm等),因此从这些工具开始您的评估-它将使模拟1000个虚拟用户变得非常容易和负担得起。
https://stackoverflow.com/questions/5146046
复制相似问题