如何将“w3wp”进程名称转换为 PID 或用户名?(即“w3wp#29”)

如何将“w3wp”进程名称转换为 PID 或用户名?(即“w3wp#29”)

我正在运行一些性能监控计数器/报告Windows 服务器 2003 IIS6Web 服务器,每个网站都在其自己的应用程序池/工作进程用户下运行。

该报告提供了这些地点的名称,例如:

w3wp#29
w3wp#30
w3wp#31
w3wp#32

我需要工作进程名称(或 PID),这样我才能确定每个进程与哪个网站相关。

#29、#30、#31 等数字不是 PID,因为当我在任务管理器中启用 PID 视图或在 Sysinternals 进程管理器中启用“命令行”列,或者使用 iisapp.vbs 脚本时 - PID 是更长的数字。

我还没有找到任何东西来将上述过程转换为应用程序池用户名或至少是 PID,因此我可以使用 iisapp.vbs 脚本将其交叉引用到站点。

我研究了这个问题并且确实找到了一个可以满足我要求的注册表设置,但是除非没有其他办法,否则我不想更改注册表:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance]
"ProcessNameFormat"=dword:00000002

关于如何查找或将 w3wp#XX 进程转换为应用程序池用户名或 PID 有什么想法吗?

谢谢

答案1

要进行交叉引用,您可以使用进程计数器“ID Process”。将其包含在 perf 数据中,它将显示该进程的 PID。这对于一次性交叉引用来说很好,但有点麻烦。

如果可以的话,我仍然建议更改注册表。在我看来,注册表更改应该是任何基础构建的一部分。

以下是一篇涉及相同内容并确认注册表更改的博客文章:http://weblogs.asp.net/owscott/archive/2007/03/19/registry-change-for-perfmon-and-pid-data.aspx

答案2

老问题,但您可以使用 sysinternals 实用程序 PROCEXP 并添加“命令行”列来查看哪个池在哪个 w3wp 进程中运行。

相关内容