【问题标题】:Reading w3wp .Net Performance Counter Instances programmatically以编程方式读取 w3wp .Net 性能计数器实例
【发布时间】: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 计数器未列出。有谁知道为什么会这样以及我该如何解决?

【问题讨论】:

    标签: c# .net performancecounter


    【解决方案1】:

    解决方案是您必须以与您的网站相同的位数运行应用程序。由于我的网站是 64 位的,我需要以 64 位模式运行控制台应用程序。为此,请右键单击控制台应用程序项目,单击“构建”选项卡中的属性,取消选中“首选 32 位”框。

    此外,当您使用 .NET CLR 内存类别中的进程 ID 计数器收集 w3wp 进程的进程 ID 时,它从零开始。要获取进程 ID,您必须初始化网站并确保至少发生一次垃圾收集。由于这是在我的测试代码中,我可以简单地在 Application_Start 处理程序中调用 GC.Collect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多