【发布时间】:2015-03-09 21:10:00
【问题描述】:
我正在尝试编写小型 IIS 进程监视器(CPU 和内存使用情况),它应该对系统尽可能轻。我只需要 IIS 应用程序池名称、当前内存使用情况和当前 CPU 使用情况。
使用这两个命令我已经成功地做到了,没有更大的问题:
using (var srvman = new ServerManager())
{
workerProcesses = srvman.WorkerProcesses;
}
和
processes = Process.GetProcesses().Where(processItem => processItem.ProcessName.Contains("w3wp") || processItem.ProcessName.Contains("php-cgi"))
第一个返回带有进程 ID 的正在运行的应用程序池,第二个返回来自系统的进程信息(所以这里是我获取 CPU 和内存使用情况的地方)。加入这两个信息几乎可以满足我的需求。一个例外是在 IIS 上运行的 PHP 应用程序。
对于 PHP 应用程序,php-cgi.exe 进程正在生成,我需要将其与 IIS 应用程序池工作进程相关联。你知道如何将php-cgi.exe 进程连接到他们的w3wp.exe 父母吗?
这是我想要生成的输出示例:
1x w3wp.exe for site.com is using 15MB memory
4x php-cgi.exe is using 4x 15MB = 60MB memory
我打算汇总这些信息(在这种情况下,site.com 的内存使用量为 75 MB)。
【问题讨论】:
-
我编辑了您的帖子以从标题中删除标签,这在 StackExchange 中是避免的。见meta.stackexchange.com/questions/19190/…
-
好的。我会记住的。
标签: c# php iis windows-server