Странное поведение счетчиков процессов - PullRequest
1 голос
/ 23 октября 2009

У нас есть веб-приложение, в котором мы используем некоторые счетчики производительности. Для случаев, когда одновременно запущено более одного приложения, у нас есть код для определения имени текущего экземпляра:

  int processId = GetProcessID();

  PerformanceCounterCategory processCategory = new PerformanceCounterCategory("Process");
  string[] runnedInstances = processCategory.GetInstanceNames();

  foreach (string runnedInstance in runnedInstances){
    using (System.Diagnostics.PerformanceCounter performanceCounter = 
      new System.Diagnostics.PerformanceCounter("Process", "ID Process", runnedInstance, true)){
      if ((int)performanceCounter.RawValue == processId){
        return runnedInstance;
      }
    }
  }

Этот код работает нормально, но некоторое время назад мы добавили в нашу поддержку два счетчика из категории .Net CLR. И как мы обнаружили, они имеют различное соответствие между идентификатором процесса и именем экземпляра: alt text http://img26.imageshack.us/img26/9876/perfmon.png

Таким образом, идентификаторы процессов различаются для одного имени экземпляра для .Net Clr Memory и категории Process.

  1. Это ошибка .Net?

  2. Какой счетчик (идентификатор процесса из памяти .Net Clr или идентификатор процесса из категории процесса) следует использовать для получения правильного имени экземпляра?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...