2010-09-15 69 views
1

服务器提供一个SOAP函数调用接口。
几百台,也许几千台PC都会调用这个函数。
我需要使用一台PC加载测试。如何加载测试SOAP接口(SOAP函数调用原子)?

目前我只有一个for循环。这足够好吗?如果不是,我该如何让测试更真实?

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

我希望很清楚,如果不是,请询问更多信息。

什么是最好的方式来测试这个,模拟许多个人电脑上?


更新,我使用VB快递2008年。我不能相信,.NET就是如此,它会阻止SOAP的远程过程调用的持续时间的CPU ...或不是吗?

回答

0

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

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

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

0

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

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

编辑:上述固定错字,词应该用一个for循环,你可能只发放一个同时请求已经“有可能”,而不是“喜欢”

+0

“SOAP调用将不会立即返回”,但它是否为原子,还是应该要求同步或异步?当一个线程进行一次调用时,它会阻塞它的CPU直到SOAP调用返回? – user448969 2010-09-16 01:13:27

+0

它不这样工作。阻塞线程不会阻塞CPU。事实上,它恰恰相反 - 它允许使用不同的线程来使用CPU。 – 2010-09-16 04:57:41