这是我想展示的非常简单的场景:
internal class Program
{
private static void Main(string[] args)
{
var uri = new Uri("http://myserver.com");
ServicePointManager.FindServicePoint(uri).ConnectionLimit = 1000;
for (int i = 0; i < 1000; i++)
{
WebRequest.Create(uri).BeginGetResponse(a => { }, null);
}
Console.WriteLine("done");
Console.ReadLine();
}
}
以及对应的App.config:
<system.net>
<connectionManagement>
<clear/>
<add address="*" maxconnection="1000" />
</connectionManagement>
<defaultProxy>
<proxy proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
假设 myserver.com 响应 10 秒(我通过 AutoResponder 在 Fiddler 中模拟了这一点)。
在代理服务器(提琴手)中,我看到在应用程序启动时只发送了 14 个 http 请求。然后活动连接的数量正在增长但非常缓慢,大约在 1-2 秒内 +1 个请求。因此,经过 1 分钟的工作,活跃的 http 请求数约为 50,但不是 1000。
如果不是 1000 个真正的 http 请求但至少 200-300 个,我是否可以更改任何配置以强制 .NET 打开?