异步WCF Web服务负载测试

时间:2010-07-21 22:04:13

标签: wcf web-services testing load-testing

我看到有关负载测试Web服务的其他几个问题。但据我所知,这些都是同步负载测试工具。 (意思是他们发送了大量请求,但一次只发送一个请求。)

我正在寻找一种工具,我可以说,“我希望100个请求在同一时间启动”。

现在,我是整个负载测试的新手,所以这些工具可能是异步的,我只是错过了它。

无论如何,简而言之,我的问题是:是否有一个很好的工具来异步负载测试WCF Web服务(即很多线程)。

3 个答案:

答案 0 :(得分:3)

一般情况下,我建议您查看soapUI,了解与测试Web服务有关的任何内容。他们在专业版中有负载测试功能(我还没有使用过这些功能)。

此外,他们刚刚使用loadUI产品进入测试阶段。如果它与母产品一样接近,那么值得一看。

答案 1 :(得分:1)

您可以使用Visual Studio负载测试代理组件在多台客户端计算机上运行,​​这样您就可以像加载计算机一样异步运行。 使用此功能需要许可证。

没有工具允许您在完全相同的瞬间(即在几毫秒内)应用负载,但这不是正确加载测试应用程序所必需的。

对于大多数需求,运行Visual Studio Ultimate版本的单个负载测试服务器将足以让您了解Web服务在负载下的执行情况。

Visual Studio和我想象的大多数其他工具都会以异步方式应用加载,但我认为在您的视图中,您希望一次性应用set load。 这实际上并不是必需的,因为在实践中,负载不以这种方式应用于服务。

期望高负载的服务的最佳选择是加载您的服务,直到达到给定数量的“每秒请求数”。找到您的应用程序应该期望的级别有点棘手,但需要大致了解您期望的用户数量以及他们在给定时间段内使用它的数量。

要做的另一项测试是设置负载测试工具并运行加载,直到Web服务开始执行不正常或测试工具用完“oomph”并且无法再创建负载。

答案 2 :(得分:1)

对于开发时间,您可以使用NLoad(http://nload.github.io) 在您的开发机器或测试环境上运行负载测试。

例如

public class MyTest : ITest
{
  public void Initialize()
  {
    // Initialize your test, e.g., create a WCF client, load files, etc.
  }

  public void Execute()
  {
    // Send http request, invoke a WCF service or whatever you want to load test.
  }
}

然后创建,配置并运行负载测试:

var loadTest = NLoad.Test<MyTest>()
                      .WithNumberOfThreads(100)
                      .WithDurationOf(TimeSpan.FromMinutes(5))
                      .WithDeleyBetweenThreadStart(TimeSpan.Zero)
                      .OnHeartbeat((s, e) => Console.WriteLine(e.Throughput))
                    .Build();

var result = loadTest.Run();