web服务-PSH运行空间+新WebServiceProxy=2个连接限制



我需要一个调用内部web服务的高性能脚本。因此,我编写了一个powershell脚本来创建运行空间线程,每个线程都向一个公共Web服务代理对象(NewWebServiceProxy(发出请求。

我发现,无论我创建的线程数量和web服务应用程序池工作进程的数量如何,我都只能从运行脚本的计算机同时进行2个HTTP连接,因此web服务中只有两个进程。这并没有给我足够快的结果。

通过在多台客户端计算机上运行脚本,我可以在强调web服务器之前将工作进程提高到8个。我需要用一个powershell脚本编写代码。

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

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

这似乎确实提高了我的脚本的性能,但我仍然只看到2个到web服务的HTTP连接。

看起来真正的解决方案是管理这个.Net属性:

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

有人能向我解释一下我在powershell中是如何处理这个问题的吗?我无法弄清楚NewWebServiceProxy返回的对象和ServicePoint类之间的任何连接?那么,在Powershell中设置什么来更改2连接限制呢?

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

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

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