Ключевые счетчики монитора производительности

Опубликовано: 25 Марта, 2023

Мониторинг производительности — сложная тема и в некотором смысле больше искусство, чем наука. Столкнуться с выбором из более чем тысячи счетчиков производительности может быть сложно. Какие из них важно отслеживать на регулярной основе, а какие можно в значительной степени игнорировать? Многое зависит от роли системы, которую вы хотите отслеживать, и от того, идете ли вы о планировании емкости, обеспечении доступности, увеличении масштаба, отслеживании возможных проблем или устранении возникших проблем. Хотя базовая процедура использования консоли производительности была описана ранее в WindowsNetworking в статье Эндрю Табоны Монитор производительности Windows 2003, я подумал, что было бы полезно перечислить несколько ключевых счетчиков, которые администраторы могут захотеть отслеживать в отношении общего состояния сервера. обеспокоен. Итак, вот некоторые из моих наиболее рекомендуемых счетчиков производительности в произвольном порядке, организованные вокруг пяти вопросов, которые вы можете задать себе относительно состояния ваших машин.

Доступен ли ваш сервер?

Доступность означает, что ваша система или приложение запущены и работают, и один из способов определить доступность вашей системы — просмотреть счетчик SystemSystem Up Time, который показывает, сколько секунд прошло с момента последней перезагрузки сервера. Проще всего просмотреть этот счетчик в виде отчета, который показывает фактическое числовое значение счетчика в прошедших секундах. Однако лучшим способом является создание журнала счетчика производительности и отслеживание этого счетчика в фоновом режиме, чтобы вы могли периодически просматривать его, когда вам нужно создать отчет на конец месяца.

Если вы хотите углубиться еще больше, вы можете отслеживать время безотказной работы любого процесса, запущенного на вашем компьютере, с помощью счетчика «Процесс (экземпляр) Прошедшее время», который сообщает вам, как долго этот конкретный процесс выполняется на вашем компьютере. Например, Process(winlogon)Elapsed Time покажет мне, сколько времени прошло с момента запуска процесса Winlogon на моем компьютере, и обычно это должно быть на несколько секунд меньше, чем SystemSystem Up Time, поскольку Winlogon запускается во время процесса загрузки.. Конечно, вы можете использовать счетчик Процесс(экземпляр)Прошедшее время, чтобы отслеживать процессы, связанные с конкретными приложениями и службами, чтобы контролировать доступность этих приложений и служб. Однако будьте осторожны, так как некоторые службы предназначены для запуска и остановки при определенных условиях, в то время как другие службы встроены в хост-процессы служб (svchost.exe), и вам необходимо сначала определить, какой хост-процесс содержит службу, которую вы хотите отслеживать.

Насколько это занято?

Слишком загруженный сервер может быть не в состоянии удовлетворительно отвечать на запросы клиентов. Это приводит к недовольству пользователей, и давайте смотреть правде в глаза, важным аспектом вашей работы в качестве администратора является обеспечение удовлетворительного «опыта» для конечных пользователей, которых вы поддерживаете. Простейшим показателем загруженности системы является Processor(_Total)\% Processor Time, который измеряет общее использование вашего процессора всеми запущенными процессами. Обратите внимание, что если у вас есть многопроцессорная машина, Processor(_Total)\% процессорного времени фактически измеряет среднюю загрузку процессора вашей машины (т.е. загрузку, усредненную по всем процессорам).

Если вы отслеживаете этот счетчик и он работает на уровне 100 % или около него в течение длительного периода времени, вам следует развернуть данные на уровне процессов, изучив счетчик Процесс(экземпляр)\% загрузки процессора для различных экземпляров процессов на вашем компьютере. Например, на веб-сервере IIS вы можете отслеживать Process(inetinfo)\% Processor Time, а на сервере Exchange хорошим счетчиком для отслеживания является Process(store)\% Processor Time и так далее. Однако высокая загрузка процессора не всегда является признаком проблемы. Например, когда выполняется задание резервного копирования, загрузка процессора обычно достигает высокого уровня на время резервного копирования, особенно если программа резервного копирования шифрует или сжимает информацию перед ее записью на ленту. На самом деле, если ваш сервер обычно работает с загрузкой процессора около 70% или 80%, то это обычно является хорошим признаком и означает, что ваша машина эффективно справляется со своей нагрузкой и не используется недостаточно. С другой стороны, средняя загрузка процессора около 20% или 30% предполагает, что ваша машина недостаточно загружена и может быть хорошим кандидатом на консолидацию серверов с помощью Virtual Server или VMWare.

Еще одна вещь, которую вы можете сделать, чтобы исследовать высокую загрузку процессора, — это разбить ее на Processor(_Total)\% Privileged Time и Processor(_Total)\% User Time, которые соответственно показывают загрузку процессора для процессов режима ядра и пользовательского режима на вашем компьютере.. Если загруженность режима ядра высока, ваша машина, скорее всего, имеет недостаточную мощность, поскольку она слишком занята выполнением основных служебных функций ОС, чтобы иметь возможность эффективно запускать другие приложения. И если использование пользовательского режима высокое, возможно, на вашем сервере работает слишком много определенных ролей, и вам следует либо усилить аппаратное обеспечение, добавив еще один процессор, либо перенести приложение или роль на другой компьютер.

Если на вашем компьютере запущено несколько приложений или несколько ролей сервера в вашей сети, другим способом измерения загруженности является измерение конкуренции между процессорами, которая указывает на то, как разные потоки борются за внимание процессоров на вашем компьютере. Если слишком много потоков соревнуются за использование одного и того же процессора, запросы этих потоков ставятся в очередь, и просмотр счетчика SystemProcessor Queue Length показывает, сколько потоков ожидает выполнения. Если значение этого счетчика постоянно выше 5, когда загрузка процессора приближается к 100 %, то это хороший признак того, что имеется больше работы (активных потоков), доступных (готовых к выполнению), чем процессоры машины могут обработать. Обратите внимание, что это не всегда жесткий и быстрый показатель, однако для некоторых служб, таких как пул IIS 6, и управление своими собственными рабочими потоками, поэтому, например, на загруженном веб-сервере вы можете посмотреть другие счетчики, такие как ASPRequests Queued или ASP. .NETRequests также поставлены в очередь. Кроме того, чем больше количество активных служб и приложений, запущенных на вашем сервере, тем более загружена очередь процессора, поэтому на многоролевом сервере, работающем почти на 100%, содержимое может быть значительным фактором только после того, как SystemProcessor Queue Length превышает что-то вроде 10 вместо 5, как упоминалось ранее.

Оборудование работает правильно?

Есть несколько счетчиков производительности, которые вы можете отслеживать, чтобы отслеживать признаки того, что аппаратные устройства вашей машины работают правильно. Одним из них является SystemContext Switches/sec, который измеряет, как часто процессор должен переключаться из режима пользователя в режим ядра, чтобы обработать запрос от потока, работающего в пользовательском режиме. Чем тяжелее рабочая нагрузка на вашем компьютере, тем выше обычно будет этот счетчик, но в долгосрочной перспективе значение этого счетчика должно оставаться довольно постоянным. Однако, если этот счетчик внезапно начинает увеличиваться, это может указывать на неисправность устройства, особенно если вы видите аналогичный скачок в счетчике Процессор(_Total)Interrupts/sec на вашем компьютере. Вы также можете проверить Processor(_Total)\% Privileged Time Counter и посмотреть, показывает ли этот счетчик аналогичное необъяснимое увеличение, так как это может указывать на проблемы с драйвером устройства, который вызывает дополнительное воздействие на использование процессора в режиме ядра. В этом случае вы можете развернуть и, возможно, найти виновника, изучив счетчик Процесс (экземпляр)\% процессорного времени для каждого экземпляра процесса, работающего на вашем компьютере. Это не скажет вам напрямую, какой драйвер использует процессорное время, но может указать, какое вызывающее приложение косвенно вызывает проблему, и может помочь вам в дальнейшем устранении проблемы.

Если Processor(_Total)Interrupts/sec плохо коррелирует с SystemContext Switches/sec, ваш внезапный скачок в переключении контекста вместо этого может означать, что ваше приложение достигает предела масштабируемости на вашем конкретном компьютере, и вам может потребоваться масштабирование. ваше приложение (например, с помощью кластеризации) или, возможно, изменить способ обработки запросов пользовательского режима. В любом случае рекомендуется отслеживать SystemContext Switches/sec в течение определенного периода времени, чтобы установить базовый уровень для этого счетчика, и как только вы это сделаете, создайте предупреждение perfmon, которое будет срабатывать, когда этот счетчик значительно отклоняется от его наблюдаемое среднее значение.

У вас достаточно оперативной памяти?

Счетчик MemoryPages/sec показывает количество операций подкачки на диск в течение интервала измерения, и это основной счетчик, за которым следует следить, чтобы указать на возможное недостаточное количество оперативной памяти для удовлетворения потребностей вашего сервера. Хорошей идеей здесь является настройка оповещения perfmon, которое срабатывает, когда количество страниц в секунду превышает 50 на диск подкачки в вашей системе. Еще один ключевой счетчик, на который следует обратить внимание, — это MemoryAvailable Bytes, и если этот счетчик превышает 10 % фактической оперативной памяти на вашем компьютере, то у вас, вероятно, более чем достаточно оперативной памяти, и вам не о чем беспокоиться.

Вы должны сделать две вещи со счетчиком «ПамятьДоступные байты»: создать журнал производительности для этого счетчика и регулярно отслеживать его, чтобы увидеть, не развивается ли какая-либо тенденция к снижению, и настроить оповещение, которое будет срабатывать, если он упадет ниже 2% установленной оперативной памяти. Если тенденция к снижению действительно развивается, вы можете отслеживать процесс (экземпляр)рабочий набор для каждого экземпляра процесса, чтобы определить, какой процесс потребляет все больше и больше объемов оперативной памяти. Процесс (экземпляр)Рабочий набор измеряет размер рабочего набора для каждого процесса, который указывает количество выделенных страниц, которые процесс может адресовать, не вызывая ошибки страницы. Связанным счетчиком является MemoryCache Bytes, который измеряет рабочий набор для системы, т. е. количество выделенных страниц, которые потоки ядра могут адресовать, не вызывая ошибки страницы.

Наконец, еще одним подтверждающим индикатором нехватки ОЗУ является MemoryTransition Faults/sec, который измеряет, как часто повторно ссылаются на недавно обрезанную страницу в резервном списке. Если этот счетчик начинает медленно расти с течением времени, это также может указывать на то, что вы достигли точки, когда у вас больше не хватает оперативной памяти для нормального функционирования вашего сервера.

Диски достаточно быстрые?

Наконец, давайте рассмотрим пару индикаторов исправности жестких дисков в вашей системе. Наблюдайте за счетчиком Physical Disk (instance)Disk Transfers/sec для каждого физического диска, и если он превысит 25 дисковых операций ввода-вывода в секунду, значит, у вашего диска плохое время отклика. Узкое место на диске может значительно повлиять на время отклика для приложений, работающих в вашей системе, поэтому вам следует дополнительно изучить это, отслеживая Физический диск(экземпляр)\% Idle Time, который измеряет процент времени, в течение которого ваш жесткий диск простаивает в течение интервала измерения., и если вы видите, что значение этого счетчика падает ниже 20 %, вероятно, у вас есть очереди на чтение/запись для вашего диска, который не может своевременно обслуживать эти запросы. В этом случае пришло время обновить ваше оборудование, чтобы использовать более быстрые диски, или масштабировать ваше приложение, чтобы лучше справляться с нагрузкой.