异步 WCF Web 服务负载测试

发布于 2024-09-11 01:14:13 字数 228 浏览 8 评论 0原文

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

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

现在,我对整个负载测试很陌生,因此这些工具可能是异步的,而我只是错过了它。

不管怎样,简而言之,我的问题是:是否有一个好的工具可以异步负载测试 WCF Web 服务(即大量线程)。

I see several other questions about load testing web services. But as far as I can tell those are all synchronous load testing tools. (Meaning they send a ton of requests but the go one at a time.)

I am looking for a tool where I can say, "I want 100 requests to be launched at the exact same time".

Now, I am new to the whole load testing thing, so it is possible that those tools are asynchronous and I am just missing it.

Anyway, in short my question is: Is there a good tool for load testing WCF Web Services asynchronously (ie lots of threads).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

残龙傲雪 2024-09-18 01:14:13

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

此外,他们刚刚推出了 loadUI 产品的测试版。如果它与父产品几乎一样好,那么就值得仔细研究。

In general, I recommend you look at soapUI, for anything to do with testing web services. They do have load testing features in the Professional edition (I haven't used these yet).

In addition, they've just entered beta with a loadUI product. If it's anywhere near as good as the parent product, then it's worth a hard look.

2024-09-18 01:14:13

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

没有任何工具可以让您在同一时刻(即几毫秒内)施加负载,但这对于正确地对应用程序进行负载测试来说并不是必需的。

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

我认为 Visual Studio 和大多数其他工具将以异步方式应用负载,但我认为在您看来您希望一次性应用一组负载。
这并不是真正必要的,因为实际上负载不会以这种方式应用于服务。

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

要做的另一个测试是设置一个负载测试工具并运行负载,直到 Web 服务开始表现不佳或测试工具耗尽“活力”并且无法创建更多负载。

you can use the Visual Studio load testing agent components to run on multiple client machines and that will allow you to run as asynchronously as you have machines to load.
There is a licence requirement for using this feature.

There are no tools that will allow you to apply a load at exactly the same instant (i.e. within milliseconds), but this is not necessary to load test an application correctly.

For most needs a single load test server running Visual Studio Ultimate edition will be more than enough to get an understand of how your webservice performs under load.

Visual Studio and most other tools I imagine will apply load in an asynchronous manner, but I think in your view you want to apply a set load all at once.
This is not really necessary as in practice load is not applied to a service in this manner.

The best bet for services expecting high load is to load your service until a given number of "requests per second" is reached. Finding what level your application should expect is a bit trickier, but involves figuring out roughly how many users you would expect and the amount they will be using it over a given period.

The other test to do is to setup a load test harness and run the load up until either the webservice starts to perform badly or the test harness runs out of "oomph" and cannot create any more load.

就此别过 2024-09-18 01:14:13

对于开发时间,您可以使用 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();

For development time you can use NLoad (http://nload.github.io)
to run load tests on your development machine or testing environment.

For example

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.
  }
}

Then create, configure and run a 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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文