並列 HTTP リクエストの制限: Windows レジストリ構成の調査
ThreadPool を使用して多数の非同期 HTTP リクエストを実行するアプリケーションを最適化するために、開発者は最初、パフォーマンスの制約に直面しました。初期のトラブルシューティングでは、サーバー側の潜在的な制限に対処しようとしましたが、この手段は排除されました。
調査では、同じ Web サーバーに対する同時リクエストの数に対して Windows によって課される潜在的な制限が示唆されました。この動作を変更する手段として、[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings] 内のレジストリ値 "MaxConnectionsPerServer" と "MaxConnectionsPer1_0Server" を強化することが推奨されました。しかし、期待された改善は実現しませんでした。参照されているレジストリ値が間違っているのではないか、または現在の Windows 環境では変更が無効になっているのではないかという疑いが生じました。
興味深いことに、ThreadPool の MaxThreads 設定を変更してもアプリケーションのパフォーマンスに影響はなく、したがって、アプリケーションのパフォーマンスに影響はありませんでした。潜在的なボトルネック。対応するリソース モニターの観察により、TCP 接続の制限がさらに確認されました。
アプローチの修正
詳しく調べると、問題は ServicePoint クラスによって導入された制限に起因していることが明らかになりました。 HTTP 操作の接続を管理します。各 ServicePoint オブジェクトは、デフォルトで最大 2 つの同時接続を指示します。この制約を軽減するために、開発者は、より多くの同時リクエストに対応できるように "ServicePointManager.DefaultConnectionLimit" プロパティを変更しました。この調整により最終的に問題は解決され、アプリケーションが複数の HTTP リクエストを同時に実行できるようになりました。
以上がWindows アプリケーションでの同時 HTTP リクエストの数を増やすにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。