これが、私が示したい非常に単純なシナリオです。
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 でエミュレートしました)。
プロキシ サーバー (Fiddler) では、アプリケーションの開始時に 14 個の http 要求のみが送信されていることがわかります。その後、アクティブな接続の数は増加していますが、非常に遅く、約 1 ~ 2 秒で +1 リクエストです。したがって、1 分間の作業の後、アクティブな HTTP リクエストの数は約 50 ですが、1000 ではありません。
実際の http 要求が 1000 ではなく、少なくとも 200 ~ 300 の場合に .NET を強制的に開くように変更できる構成はありますか?