私の会社には、さまざまなマシンでホストされている Web サイトに関連する情報を追跡するアプリケーションがあります。中央サーバーは、チェックするサイトのリストを取得する Windows サービスを実行し、それらのターゲット サイトで実行されているサービスにクエリを実行して、ローカル データの更新に使用できる応答を取得します。
私の仕事は、このプロセスにマルチスレッドを適用して、すべてのサイト (順番に実行するのに約 8 時間かかるほぼ 3000 のサイト) を処理するのにかかる時間を短縮することでした。マルチスレッド化されていない場合、サービスは正常に実行されますが、作業を複数のスレッドに分散させた瞬間 (現在 3 つとウォッチャー スレッドでテスト中)、リモート サービスへの呼び出しが原因であると思われる奇妙なクラッシュが発生します。データを提供することになっています。これは SOAP/XML 呼び出しです。
テスト サーバーで実行すると、サービスはあきらめてタスクを完了しませんが、実行を停止しません。デバッガー (Dev Studio 2010) を実行すると、すべてが停止します。実行すると、数秒後にデバッグが停止しますが、完了したからではありません。例外をスローしたり、メッセージを表示したりしません。ブレークポイントを使用すると、停止するポイントまで歩くことができます。イベントログは私を同じ場所に導きます。他のサイトの Web サービスからの応答を取得しようとするコード行で停止します。繰り返しますが、これはマルチスレッドの場合にのみ行われます。
デフォルトで 2 に設定されている接続数に制限があることを示唆する情報をいくつか見つけました。提案された解決策は、app.config にいくつかのタグを追加することですが、それでも問題は解決していません...
<system.net>
<connectionManagement>
<add address="*" maxconnection="20"/>
</connectionManagement>
</system.net>
許可された接続の数に関連している可能性があると考えていますが、それに関する情報をオンラインでうまく見つけることができませんでした. 私が見逃している簡単なものはありますか?どんな助けでも大歓迎です。