背景:
C#.Net (.Net 4.0) Web サイトを持っています。エンジンを呼び出して、変更できないベンダー実行可能ファイルを介して外部データベースからデータを取得します。ユーザーが特定のボタンをクリックするたびに、Web ページはエンジンにいくつかのスレッドを生成するように指示し、各スレッドは実行可能ファイル (ABC.exe と呼びましょう) のプロセスを生成してデータを取得します。実行可能ファイルが実行され、取得したデータがサーバー上の CSV ファイルに保存されます。次に、スレッドは最初に CSV を読み取り、すべてのデータを統合して計算を行い、Web サイトに戻ります。
問題:
Web サーバー (Windows 7、4 つの仮想プロセッサを実行) 上の IIS 7.5 に Web サイトを展開したときに、4 つを超えるスレッドを生成すると、プロセスがスタックします。
テストが行われました:
- 同じサーバーで Visual Studio を使用して正確なコードを実行すると、エラーは発生しませんでした。すべてのスレッドが正しく生成され、すべてのプロセスが正しく実行されています。これは非常に奇妙です。
- 2 人のユーザーがボタンをクリックし、両方のクリックで 4 つのスレッドが生成された場合、最初の 4 つのスレッドは正しく機能しますが、2 番目の 4 つのスレッドはそのままスタックします。
- 接続を実行しないさまざまな実行可能ファイルでスレッドを実行すると、コードが機能します。
- このコードでは、Task または Thread を使用しても違いはありません。
これは、IIS で特定の IP に許可されている送信接続と関係があるのではないかと考えています。
誰でもこれに光を当てることができますか?さらに情報が必要な場合はお知らせください。ありがとう!