.NET Framework では、 サーバーへの同時接続数がデフォルトで最大2に制限されています。そのため、Webサービスクライアントから、Webサービスなどを呼び出すときにスループットを向上させるために、マルチスレッドでWebサービスを呼び出しても実際にはアクティブな最大同時接続数は2になってしまいます。
シングルスレッドで通信を行う場合と比べればスループット(単位時間当たりの処理数)は向上するかもしれませんが、処理を行うスレッド数を増やしてもすぐにその効果が得られなくなります。
サーバへの同時接続数が最大2の制限はアプリケーションのアプリケーション構成ファイル(machine.configでも可能) に connectionManagement 要素を次のように追加することで最大数を増やすことができます。下の記述では、任意のサーバへの接続数を最大20に設定しています。実際に使用する場合、セキュリティを考慮してaddress は、制限を解除したいサーバのURLのみを指定するとよいと思います。
<system.net> <connectionManagement> <add address="*" maxconnection="20"/> </connectionManagement> </system.net>
connectionManagement の詳しい説明については MSDNドキュメントを参照してください。
制限を解除することで多重化によるスループット向上の効果を得られるようになります。
さんのコメント: さんのコメント: