この質問は、私が最近尋ねた接続リセットの質問に関連しています。また、このSO 記事と このSO記事の情報も追求しています。私が知りたいのは、IIS スレッド プールのクラッシュの原因を追跡する最善の方法です。この問題については、ベンダーにも問い合わせています。詳細はこちら。
IIS アプリケーションがあります。これは、数年前に最初の COM ツールキットを購入したときにベンダーから提供されたサンプルをモデルにした、非常に単純な ASP ページを使用しています。このアプリケーションは、Windows Server 2003 上の IIS で実行されます。このアプリケーションは、仮想ルートではなく別の Web サービスであり、80 とは異なるポート番号にあります。つまり、別の NIC または仮想 IP アドレスを使用していません。サイトのトラフィックはほとんどありませんが、DMZ を持つように構成されています。全体の構成は、私には少しファンキーに見えます。
アドレス検証要求は、http プロトコルを使用するブラウザレス アプリケーションから IIS アプリケーションに送信されます。番地、通りの名前、市区町村、都道府県がその他の識別情報とともに送信され、応答が返されます。アプリケーションの 1 つは C で書かれています。もう 1 つは Clojure で記述されています。
新しく構築された IIS アプリケーションへの「シングル ショット」要求の送信は、両方のアプリケーションから問題なく機能します。大量の要求を送信すると、それが 25 を超えているのか、それとも他の数なのかを特定するのが困難であり、IIS スレッド プールがクラッシュします。それは多かれ少なかれエラーログが言うことです。
このアプリケーションは、W2K/IIS サーバーで何年も問題なく実行されています。ASP ページは、ベンダーから購入した COM ツールキットを使用してアドレス検証エンジンと通信します。新しいサーバー (および 2012 COM ツールキット) にアップグレードする必要があったのは、最新の COM ツールキットが W2K にインストールされず、新しい COM ツールキットに新しい USPS 住所確認規則のサポートが含まれていたからです。新しいツールキットを使用せずに検証する住所の数は少なくなります。住所をバーコード化して割引を受ける唯一の方法は、住所を検証することです。(自動車税の請求書を 29,000 通送ると、割引が適用されます。)
この問題を追跡して原因を突き止める最善の方法は何ですか? 回答と同じくらい良い情報へのリンクを探しています。あいまいで申し訳ありません。私は SO のルールを知っており、できるだけ詳しく説明するよう努めています。誰かがそれらを見たい場合は、この投稿を再編集してログ エントリを提供できます。要点は、IIS スレッド プールがクラッシュすると、Clojure クライアント (バッチ リクエストを処理する) がリセットされ始め、クラッシュすることです。
エピローグ:
COM オブジェクトをすばやく開いたり閉じたりすることが問題であると考えており、この方法で ASP ページを作成することはベンダーによって承認されました。この問題と、追加のアドレス検証機能のために MS Access もインストールする必要があるという事実を回避するために、複数のニーズを解決する ActiveState Perl プログラムを作成することになりました。
まず、Perl プログラムをサービスとして実行する ActiveState 製品を購入しました。サービスは、以前と同様に、http ベースのリクエストを送信できるようにするパラメーターとポート番号で開始されます。この場合、COM オブジェクトは Perl プログラムの開始時に一度開かれ、Perl プログラムの終了時に閉じられます。
Perl プログラムによって提供されるその他の機能は、この記事とは関係ありませんが、この Perl プログラムを作成すると、古い構成で必要だった IIS と MS Access が不要になります。
したがって、この投稿から何かを理解したい場合は、少なくとも W2K Server 2003 以降では、プログラムを開くときに COM オブジェクトを開き、プログラムを閉じるときに閉じます。