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