【发布时间】:2015-12-15 14:19:23
【问题描述】:
我想从 W3WP (IIS 10.0) 进程中检索性能计数器。我,能够读取进程和线程性能计数器,但不能读取任何其他类似 % Time 花在 GC 中的时间
所以我写了一个小控制台,显示所有可能与 w3wp 有关联的类别,我只看到进程和线程。
我还以管理员身份和运行应用程序池的用户身份运行控制台。但结果还是一样。
我错过了什么?
var cats = PerformanceCounterCategory.GetCategories();
foreach (var cat in cats)
{
var names = cat.GetInstanceNames();
if (names.Any(i => i.ToLowerInvariant().Contains("w3wp")))
{
Console.WriteLine(cat.CategoryName);
}
}
private static string GetProcessInstanceName(int pid)
{
PerformanceCounterCategory cat = new PerformanceCounterCategory("Process");
string[] instances = cat.GetInstanceNames();
foreach (string instance in instances)
{
using (PerformanceCounter cnt = new PerformanceCounter("Process",
"ID Process", instance, true))
{
int val = (int)cnt.RawValue;
if (val == pid)
{
return instance;
}
}
}
}
【问题讨论】:
标签: c# iis performancecounter w3wp