Создание нового System.Diagnostics.PerformanceCounter выполняется очень медленно

У меня есть простое приложение для мониторинга, которое получает некоторые значения от счетчиков PerfMon. Даже при тестировании на локальном компьютере создание нового PerformanceCounter объект.

using System;
using System.Diagnostics;

namespace test_slow_perfmon
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch w = new Stopwatch();

            w.Start();
            PerformanceCounter c = new PerformanceCounter("PhysicalDisk", "Avg. Disk Read Queue Length", "_Total", "localhost");
            w.Stop();
            Console.WriteLine(string.Format("Creating a counter took {0}ms", w.Elapsed.TotalMilliseconds));
        }
    }
}

Вывод этого указывает на более 32 с для создания каждого счетчика.

Что я могу сделать (если что-нибудь), чтобы ускорить создание счетчиков?

1 ответ

Решение

30 секунд звучат для меня подозрительно, как тайм-аут, указывая на то, что это может быть какой-то проблемой в сети.

Попробуйте создать счетчик perfmon, используя конструктор, который не указывает имя хоста, и посмотрите, поможет ли это:

PerformanceCounter c = new PerformanceCounter("PhysicalDisk", "Avg. Disk Read Queue Length", "_Total");
Другие вопросы по тегам