使用性能工具查看.Net性能计数器时,我可以看到列出的Web进程性能计数器(w3wp,w3wp#1):
但是,当我以管理员身份运行以下代码时:
var instanceNames = new PerformanceCounterCategory(".NET CLR Memory")
.GetInstanceNames()
.OrderBy(x => x);
foreach (var name in instanceNames)
{
Console.WriteLine(name);
}
这是我看到的输出:
请注意,未列出w3wp计数器。有谁知道为什么会这样,我该如何解决?
最佳答案
解决方案是您必须以与网站相同的位准运行该应用程序。由于我的网站是64位的,因此我需要在64位模式下运行控制台应用程序。为此,请在控制台应用程序项目上单击鼠标右键,在“生成”选项卡中单击“属性”,取消选中“首选32位”的框。
同样,当您使用.NET CLR内存类别中的“进程ID”计数器收集w3wp进程的进程ID时,其开头为零。要获取进程ID,您必须初始化网站并确保至少进行一次垃圾回收。就像在测试代码中一样,我可以在GC.Collect
处理程序中简单地调用Application_Start
。
关于c# - 以编程方式读取w3wp .Net性能计数器实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38072766/