大量のメモリを使用するデフォルトのアプリケーションプールでWebアプリケーションを識別する方法は?
編集 私のアプリケーションプールには多くのアプリが含まれていますが、それらを分離または停止することはできません。マルチアプリケーションアプリケーションプール内の特定のアプリケーションにどのリソースが使用されているかを知ることができますか?
大量のメモリを使用するデフォルトのアプリケーションプールでWebアプリケーションを識別する方法は?
編集 私のアプリケーションプールには多くのアプリが含まれていますが、それらを分離または停止することはできません。マルチアプリケーションアプリケーションプール内の特定のアプリケーションにどのリソースが使用されているかを知ることができますか?
過去にも、複数のアプリケーションプールを実行しているWebサーバーに対してこれを行う必要がありました。この記事のとおり:「特定のw3wp.exeプロセスに関連付けられているアプリケーションプールを特定する必要がある場合は、管理コマンドプロンプトを開き、%windir%\ System32 \ inetsrvフォルダー(cd%windir%\ System32 \ inetsrv)に切り替えます。 )そしてappcmd list wpを実行します。これにより、w3wp.exeプロセスのプロセス識別子(PID)が引用符で囲まれます。そのPIDをタスクマネージャーで使用可能なPIDと一致させることができます。」
これはまさに私がしたことです。
パフォーマンスモニターを使用して実行し、開いてから[カウンターの追加]をクリックし、[Asp.Netアプリケーション]または[ASP.Netアプリvx.xxxxx]を選択して、カウンターを選択します。
IISでは、1つのアプリプールを共有する複数のWebアプリがある場合、w3wp.exeプロセスによって各Webサイトが独自のAppDomainに分離されると思います。.NET 4を使用している場合、AppDomainごとに読み取ることができるパフォーマンスメトリックがいくつかあるようです。
これは、アプリケーションにコードを追加して、独自のAppDomainの統計をダンプし、それを集計してレポートできる可能性があることを意味します。
私はこれを自分で試したことがありませんが、それが役立つかもしれないようです...
これを行うための本当に簡単な形式は、あなたのApplication_Start()
メソッドで設定することかもしれませんAppDomain.MonitoringIsEnabled = true;
次に、ラベルにダンプする「stats.aspx」ページとAppDomain.CurrentDomain.MonitoringTotalProcessorTime
その他の統計情報を用意します。