以编程方式读取 w3wp .Net 性能计数器实例
Posted
技术标签:
【中文标题】以编程方式读取 w3wp .Net 性能计数器实例【英文标题】:Reading w3wp .Net Performance Counter Instances programmatically 【发布时间】:2016-06-28 09:48:49 【问题描述】:使用性能工具查看 .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 计数器未列出。有谁知道为什么会这样以及我该如何解决?
【问题讨论】:
【参考方案1】:解决方案是您必须以与您的网站相同的位数运行应用程序。由于我的网站是 64 位的,我需要以 64 位模式运行控制台应用程序。为此,请右键单击控制台应用程序项目,单击“构建”选项卡中的属性,取消选中“首选 32 位”框。
此外,当您使用 .NET CLR 内存类别中的进程 ID 计数器收集 w3wp 进程的进程 ID 时,它从零开始。要获取进程 ID,您必须初始化网站并确保至少发生一次垃圾收集。由于这是在我的测试代码中,我可以简单地在 Application_Start
处理程序中调用 GC.Collect
。
【讨论】:
以上是关于以编程方式读取 w3wp .Net 性能计数器实例的主要内容,如果未能解决你的问题,请参考以下文章