我需要一个高性能脚本来调用内部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属性:
有人可以向我解释我在PowerShell中如何处理这个问题?我无法弄清楚New-WebServiceProxy返回的对象与ServicePoint类之间的任何关联?那么在Powershell中设置什么才能改变2连接限制?
答案 0 :(得分:1)
我认为您只需要在脚本中将默认连接限制设置为更大的值,例如:
[System.Net.ServicePointManager]::DefaultConnectionLimit = 8
ServicePointManager
与生成的类之间的连接是生成的类继承自SoapHttpClientProtocol
,内部使用System.Net.HttpWebRequest
进行网络调用。在内部,HttpWebRequest
使用ServicePoint
和ServicePointManager
来控制您可以同时进行的机上呼叫的数量。