IIS 8 でホストされている単一の ASP.NET MVC 4 Web アプリケーション (System.Web.HttpApplication を拡張する MvcApplication) があります。私のアプリケーションは、統合パイプライン モードの別のアプリケーション プールで実行されています。このアプリケーション プールの最大ワーカー プロセス数は 1 に設定されています。
アプリケーション インスタンスがプールされ、アプリケーション (AppDomain) の同じインスタンスに対して Begin_Request/End_Request を呼び出す複数の並列スレッドが存在する可能性があることを理解しています。また、「最大ワーカー プロセス数」を 1 以上に設定すると、アプリケーション (AppDomain) のインスタンスが確実に複数になることも理解しています。
私が理解していないのは、 Application_Start への呼び出しがいくつ発行されるか、静的変数 (MvcApplication に格納され、NHibernate セッション ファクトリなどのシングルトンもあります) のインスタンスがいくつ存在するかです。
現在、.NET MemoryCache のクリーンアップに問題があります。私の Web サイトの一部のユーザーがキャッシュから古い値を受け取っているため、「最大ワーカー プロセス数」を 1 に設定した場合でも、グローバルな MemoryCache のインスタンスが複数存在する可能性があると思います。
1 つのワーカー プロセスで並行して実行される、アプリケーションの静的変数とシングルトンのインスタンスの最大数はいくつですか?
IIS ですべての AppDomains を列挙するのに役立つユーティリティまたはスクリプトはありますか?