PSH Runspaces + New-WebServiceProxy = 2连接限制?

时间:2015-05-15 22:05:35

标签: web-services powershell servicepoint servicepointmanager new-webserviceproxy

我需要一个高性能脚本来调用内部Web服务。所以我写了一个powershell脚本来创建运行空间线程,每个线程都向一个公共Web服务代理对象(New-WebServiceProxy)发出请求。

我发现无论我创建的线程数和Web服务应用程序池工作进程的数量如何,我只是从运行脚本的计算机同时进行2个HTTP连接,因此只有两个进程在网络服务。那不是给我足够快的结果。

通过在多台客户端计算机上运行我的脚本,我可以在强调Web服务器之前将工作进程提升到8。我需要使用一个PowerShell脚本来实现代码。

我尝试将此注册表项设置为8:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ MaxConnectionsPerProxy

这似乎可能会增加我的脚本的性能,但我仍然只看到2个HTTP连接到Web服务。

似乎真正的解决方案是管理这个.Net属性:

https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(v=vs.110).aspx

有人可以向我解释我在PowerShell中如何处理这个问题?我无法弄清楚New-WebServiceProxy返回的对象与ServicePoint类之间的任何关联?那么在Powershell中设置什么才能改变2连接限制?

1 个答案:

答案 0 :(得分:1)

我认为您只需要在脚本中将默认连接限制设置为更大的值,例如:

[System.Net.ServicePointManager]::DefaultConnectionLimit = 8

ServicePointManager与生成的类之间的连接是生成的类继承自SoapHttpClientProtocol,内部使用System.Net.HttpWebRequest进行网络调用。在内部,HttpWebRequest使用ServicePointServicePointManager来控制您可以同时进行的机上呼叫的数量。