Создание нового 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");