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

PSH Runspaces + New-WebServiceProxy = 2 connection limit?

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

我发现无论我创建的线程数量和 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 中处理这个问题吗?我无法弄清楚 New-WebServiceProxy 返回的对象与 ServicePoint class 之间的任何联系?那么在 Powershell 中设置什么来更改 2 连接限制?

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

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

ServicePointManager和生成的class之间的联系是生成的class继承自SoapHttpClientProtocol,内部使用System.Net.HttpWebRequest进行网络调用.在内部,HttpWebRequest 使用 ServicePointServicePointManager 来控制您可以同时进行的飞行中呼叫的数量。