Windows Server 2003 IIS6 Webサーバーでいくつかのperfmonカウンター/レポートを実行しています。各Webサイトは、独自のアプリケーションプール/ワーカープロセスユーザーの下で実行されています。
レポートは、たとえば次のようにサイトの名前を提供しています。
w3wp#29
w3wp#30
w3wp#31
w3wp#32
それぞれがどのWebサイトに関連しているかを判断できるように、ワーカープロセス名(またはPID)が必要です。
#29、#30、#31などの番号はPIDではありません。タスクマネージャーでPIDビューを有効にする場合、またはSysinternals Process Managerで[コマンドライン]列を有効にする場合、またはiisapp.vbsスクリプト(PID)を使用する場合です。長い数字です。
上記のプロセスをアプリケーションプールのユーザー名または少なくともPIDに変換するものが見つからなかったため、iisapp.vbsスクリプトを使用してサイトに相互参照できます。
私はこれを調査し、私が探していることを実行する可能性のあるレジストリ設定に出くわしましたが、他に方法がない限り、レジストリを変更したくありません。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance]
"ProcessNameFormat"=dword:00000002
W3wp#XXプロセスを検索またはアプリケーションプールのユーザー名またはPIDに変換する方法に関するアイデアはありますか?
ありがとう
相互参照するには、プロセスカウンタ「IDプロセス」を使用できます。それをパフォーマンスデータに含めると、プロセスのPIDが表示されます。これは1回限りの相互参照には問題ありませんが、少し面倒です。
可能であれば、レジストリの変更をお勧めします。私の意見では、レジストリの変更は基本ビルドの一部である必要があります。
これは、同じことをカバーし、レジストリの変更を確認するブログ投稿です: http://weblogs.asp.net/owscott/archive/2007/03/19/registry-change-for-perfmon-and-pid- data.aspx
古いバンプですが、sysinternalsユーティリティPROCEXPを使用し、「コマンドライン」列を追加して、どのプールがどのw3wpプロセスで実行されているかを確認できます。