【问题标题】:C# PerformanceCounter Requests/Sec not updatedC# PerformanceCounter Requests/Sec 未更新
【发布时间】:2018-05-13 19:55:22
【问题描述】:

我正在编写一个程序,我需要从性能计数器中获取一些值。

到目前为止,它运行良好。但是,当我尝试获取特定 IIS 站点的“请求/秒”计数器时,我没有得到任何值,比如它根本没有更新。 但是如果我在我的 Windows 计算机上检查“性能监视器”,我可以看到相同的计数器工作。

这个程序有管理员权限。

获取此计数器的代码的 sn-p 如下所示。

 public static int GetRequest()
    {

        var cat = PerformanceCounterCategory.GetCategories().FirstOrDefault(s => s.CategoryName.Contains("ASP.NET Apps v4.0.30319"));
        var catinstances = cat.GetInstanceNames().First(s => s.Contains("_lm_w3svc_3_root").ToUpper()));
        PerformanceCounter cpuCounter = new PerformanceCounter("ASP.NET Apps v4.0.30319", "Requests/Sec", catinstances, true);
        return unchecked((int)cpuCounter.NextValue());
    }

感谢您的宝贵时间。

【问题讨论】:

  • cpuCounter 应该是静态属性

标签: c# asp.net iis-7 performancecounter


【解决方案1】:

您需要保留该性能计数器的实例,而不是在每次调用时重新实例化它。

以下代码会将计数器保留在静态成员中,并在下次调用您的方法时重新使用该实例:

static PerformanceCounter _requestCounter; // keep instance around
static PerformanceCounter cpuCounter  // property with lazy init
{
   get 
   {
      // initialize if we haven't done so.
      if (_requestCounter == null) {
        var cat = PerformanceCounterCategory.GetCategories().FirstOrDefault(s => s.CategoryName.Contains("ASP.NET Apps v4.0.30319"));
        var catinstances = cat.GetInstanceNames().First(s => s.ToUpper().Contains("_WEB"));
        _requestCounter = new PerformanceCounter("ASP.NET Apps v4.0.30319", "Requests/Sec", catinstances, true);

      }
      return _requestCounter;
   }
}

public static int GetRequest()
{  
    return unchecked((int)cpuCounter.NextValue());
}

【讨论】:

  • 好的。我试图将其更改为静态,但没有做任何事情。我的代码中仍然没有从中得到任何东西。但我可以在 perfmon 中看到请求。所以我知道它在那个性能计数器上收到请求。这太奇怪了
  • @DaCh 你确实注意到我改变了包含的内容,对吧? _WEB 是我开发盒上的一个实例。你能不能试试TOTAL 看看它是否能找到任何东西?我不希望它是一个权限问题。
  • 您是否调用了两次或更多次?校准一次不会有太大作用。
  • 我没有尝试调用totalt。因为我需要它用于一个站点。如果我得到任何东西,我会测试它。我尝试每 500 毫秒将其写入控制台。当我一遍又一遍地调用我的网站时。
  • 刚试了一下。那行得通。但同样,我需要它用于特定站点
猜你喜欢
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 2022-07-21
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多