服务器提供SOAP函数调用接口 数以百计,也许几千台PC称之为功能 我需要使用一台PC加载测试。
目前我只有一个for循环。这够好吗?如果不是,我怎样才能使测试更加真实?
我曾想过线程,但如果SOAP函数调用是原子的,那么就不会买任何东西。即使这样,我的测试器PC上仍然只能有一个活动线程(每个CPU)。
我希望这很清楚,如果没有,请询问进一步的信息。
测试这个的最佳方法是什么,在一个上模拟许多PC?
更新,我正在使用VB Express 2008.我无法相信.NET是如此构造的,它将在SOAP远程过程调用的持续时间内阻塞CPU ...或者它?
答案 0 :(得分:0)
SOAP调用的原子性对线程的有用性几乎没有影响。
您应该在系统放慢测试机器速度之前创建尽可能多的线程。比CPU更多的线程仍会产生大量负载,因为SOAP调用可能不会立即返回。如果你有4个CPU,前4个线程可以同时进行SOAP调用,那么接下来的4个线程可以在原始4个完成之前再进行4次调用。虽然这并不能完全模拟多个机器调用者,但如果没有一组测试机器和一组脚本可以立即调用该服务,您将无法精确模拟该场景。
编辑:修正了上面的拼写错误,单词应该是“可能”而不是“喜欢”
答案 1 :(得分:0)
使用for循环,您可能只发出一个并发请求。运行循环的线程可能会被阻塞,等待响应。请注意,这会阻塞线程,但不会阻塞整个CPU,这可以由许多线程共享。因此,通过使用多个线程,您可以同时发出多个请求。
现在,服务器上的SOAP处理程序可能是单线程的 - 这意味着它只能同时处理1个请求。这种可能性要小得多 - 因为服务器框架专门设计为不以这种方式工作。希望你不会发现这种情况。
您确定需要处理多少个同时请求?根据具体情况,即使是10,000个活动客户端的集合也可能只生成10个并发请求。这取决于呼叫的频率以及响应持续时间。请求率(请求/秒)将决定您是否能够从一台计算机可靠/准确地模拟所需的负载。