2015-12-15 3 views
1

Я хочу получить производительность Счетчики из процесса W3WP (IIS 10.0). Я, в состоянии прочитать процесс и производительность Thread счетчиков, но не любые другие, как % Время, проведенное в GCПолучение счетчиков производительности из W3wp в C#

Так что я написал небольшую консоль, показывая мне все категории, которые могут иметь ассоциации с w3wp и я вижу только процесс и Thread.

Я также запускал консоль как администратор и как пользователь, с которым работает пул приложений. Но все тот же результат.

Что мне не хватает?

 var cats = PerformanceCounterCategory.GetCategories(); 

     foreach (var cat in cats) 
     { 

      var names = cat.GetInstanceNames(); 

      if (names.Any(i => i.ToLowerInvariant().Contains("w3wp"))) 
      { 
       Console.WriteLine(cat.CategoryName); 
      } 
     } 



     private static string GetProcessInstanceName(int pid) 
     { 
      PerformanceCounterCategory cat = new PerformanceCounterCategory("Process"); 

      string[] instances = cat.GetInstanceNames(); 
      foreach (string instance in instances) 
      { 

       using (PerformanceCounter cnt = new PerformanceCounter("Process", 
        "ID Process", instance, true)) 
       { 
        int val = (int)cnt.RawValue; 
        if (val == pid) 
        { 
         return instance; 
        } 
       } 
      } 
     } 

ответ

1

Вам необходимо запустить приложение в той же битте, что и ваш веб-сайт. Если на вашем сайте 64 бит, вам необходимо запустить приложение в режиме 64 бит.

Чтобы сделать это, щелкните правой кнопкой мыши на проекте приложения консоли, нажмите свойства на вкладке «Сборка», чтобы снять флажок «Предпочитайте 32-разрядный».

См. Reading w3wp .Net Performance Counter Instances programmatically для получения дополнительной информации.

 Смежные вопросы

  • Нет связанных вопросов^_^