我需要一个调用内部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
使用ServicePoint
和ServicePointManager
来控制您可以同时进行的机上通话的数量。