Траблшутинг счетчиков производительности: Восстановление через LODCTR /R
Архитектура подсистемы Perflib и симптомы сбоя счетчиков
Подсистема Windows Performance Counters (Perflib) отвечает за сбор метрик загрузки процессора, оперативной памяти, дисковых очередей и сетевых интерфейсов. При повреждении библиотек и реестра счетчиков администраторы сталкиваются с симптомами: оснастка perfmon.exe (Системный монитор) отображается пустой или падает, диспетчер задач Task Manager показывает нулевую или зависшую загрузку ресурсов, системы мониторинга (Zabbix Agent, Prometheus, SCOM) выдают ошибки "Cannot obtain performance data", а в журнале Application лавинообразно фиксируются ошибки Perflib Event ID 1008, 1017, 1023 и PerfProc Event ID 2002.
Причины разрушения счетчиков производительности:
- Некорректная деинсталляция серверных приложений (Exchange, SQL Server, .NET Framework), повредивших ветку реестра
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009. - Повреждение системных языковых файлов счетчиков (
perfc.dat/perfh.dat). - Сбой WMI-адаптера счетчиков производительности (WmiApRpr).
Пошаговый регламент пересборки счетчиков через LODCTR
Шаг 1: Полная пересборка системных счетчиков из бэкапа
Встроенная утилита lodctr.exe позволяет восстановить базовые и расширенные системные счетчики из эталонных ini-файлов.
# 1. Переход в системную директорию (CMD от имени Администратора)
cd /d %windir%\system32
# 2. Пересборка стандартных 64-битных счетчиков
lodctr /R
# 3. Пересборка 32-битных счетчиков в подсистеме SysWOW64
cd /d %windir%\syswow64
lodctr /RПримечание: Если команда возвращает сообщение "Error: Unable to rebuild performance counter setting from system backup store, Error code is 2", переходите к Шагу 2.
Шаг 2: Ручная повторная синхронизация extensible counters
Если автоматическая пересборка завершилась ошибкой 2, выполните принудительную перерегистрацию всех INI-файлов служб.
# Пакетная перерегистрация всех файлов счетчиков (Выполнить в CMD)
cd /d %windir%\system32
for /f %s in ('dir /b *.ini') do lodctr %sШаг 3: Синхронизация счетчиков производительности с подсистемой WMI
После восстановления реестра Perflib необходимо обновить классы WMI, транслирующие метрики производительности.
# Повторная синхронизация счетчиков WMI (WMI Performance Adapter)
winmgmt /resyncperf
Restart-Service wmiApSrv -ForceШаг 4: Проверка работоспособности через PowerShell
Убедитесь, что системные счетчики возвращают корректные данные.
# Тестовый запрос счетчика загрузки процессора
Get-Counter -Counter "\Processor(_Total)\% Processor Time"Типовые ошибки администраторов
- Игнорирование 32-битной подсистемы SysWOW64: На 64-битных системах Windows Server счетчики должны быть пересобраны в ОБЕИХ папках (
System32иSysWOW64), иначе 32-битные агенты мониторинга продолжат падать с ошибками.
Сбои счетчиков производительности оставляют инфраструктуру 'слепой' для инженеров. Передайте поддержку серверов профессионалам ITSTM: восстановим компоненты ОС, наладим сбор телеметрии (Zabbix/Grafana) и обеспечим непрерывный мониторинг.
Частые вопросы (FAQ)
Почему lodctr /R возвращает ошибку с кодом 2?
Код ошибки 2 (File Not Found) означает, что системный файл резервной копии счетчиков поврежден или отсутствует. В этом случае требуется повторная регистрация всех .ini файлов из System32 вручную.
Требуется ли перезагрузка сервера после выполнения lodctr /R?
Перезагрузка не обязательна, но рекомендуется перезапустить службы, использующие счетчики (Служба удаленного реестра, WMI, Zabbix Agent).
В чем разница между lodctr /r в строчном и заглавном регистре?
Команда lodctr /R (заглавная) выполняет полное восстановление счетчиков из системного хранилища. Команда lodctr /r (строчная) используется для восстановления конфигураций конкретного файла драйвера.
Где в реестре хранятся базовые счетчики производительности?
Базовые счетчики хранятся в ветках реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib (ключи 009 для английского языка и 019 для русского).