1

服务器提供 SOAP 函数调用接口。
数百台,也许是几千台 PC 调用该功能。
我需要使用单台 PC 对此进行负载测试。

目前我只有一个 for 循环。这够好吗?如果不是,我怎样才能使测试更真实?

我曾考虑过线程,但如果 SOAP 函数调用是原子的,那么这不会买任何东西。即使是这样,我的测试 PC 上仍然只能有一个活动线程(每个 CPU)。

我希望这很清楚,如果没有,请询​​问更多信息。

测试这一点的最佳方法是什么,在一台上模拟多台 PC?


更新,我使用的是 VB Express 2008。我不敢相信 .NET 的构造如此之好,以至于它会在 SOAP 远程过程调用期间阻塞 CPU……还是这样?

4

2 回答 2

0

SOAP 调用的原子性对线程的有用性几乎没有影响。

在降低测试机器的速度之前,您应该创建系统允许的尽可能多的线程。甚至比 CPU 更多的线程仍然会产生大量负载,因为 SOAP 调用可能不会立即返回。如果你有 4 个 CPU,前 4 个线程可能会同时进行 SOAP 调用,那么接下来的 4 个线程可以在原来的 4 个完成之前再进行 4 个调用。虽然这并不能完全模拟多个机器调用者,但如果没有一组测试机器和一组脚本来一次调用服务,您将无法准确模拟该场景。

编辑:修正了上面的错字,单词应该是“可能”而不是“喜欢”

于 2010-09-15T23:50:45.530 回答
0

使用 for 循环,您可能只同时发出一个请求。运行循环的线程可能会被阻塞,等待响应。请注意,这会阻塞线程,但不会阻塞整个 CPU,它可以被许多线程共享。因此,通过使用多个线程,您可以同时发出多个请求。

现在,服务器上的 SOAP 处理程序可以是单线程的——这意味着它只能同时处理 1 个请求。这不太可能 - 因为服务器框架专门设计为不能以这种方式工作。希望您不会发现这种情况。

您确定需要同时处理多少请求了吗?根据场景的不同,即使是 10,000 个活动客户端的集合也可能只会同时生成 10 个请求。这将取决于呼叫的频率以及响应持续时间。请求速率(请求数/秒)将决定您是否能够可靠/准确地模拟单台计算机所需的负载。

于 2010-09-16T14:02:33.403 回答