Восстановление значений библиотеки счетчиков производительности вручную


Аннотация


В этой статье описывается способ восстановления значений библиотеки счетчиков производительности вручную.

Дополнительная информация


Внимание! В этом разделе, описании метода или задачи содержатся сведения о внесении изменений в реестр. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует точно выполнять приведенные инструкции. В качестве дополнительной защитной меры перед изменением реестра необходимо создать его резервную копию. Это позволит восстановить реестр в случае возникновения проблем. Дополнительные сведения о создании резервной копии и восстановлении реестра см. в следующей статье базы знаний Майкрософт:
322756 Как создать резервную копию и восстановить реестр в Windows
При использовании системного монитора некоторые счетчики могут исчезнуть или перестать отображать данные. Основной набор библиотек счетчиков производительности может быть поврежден. В этом случае его необходимо восстановить. Кроме того, может понадобиться восстановить пользовательские (созданные приложением .NET Framework) или расширенные счетчики.

Такая ситуация возникает, если определенные расширенные счетчики искажают данные в реестре либо программы инструментария управления Windows (WMI) вносят изменения в реестр.

Восстановление основных счетчиков производительности

Сведения о расширенных счетчиках хранятся в указанных ниже местоположениях.
  • Подраздел реестра:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\Perflib\009
  • Файлы %Systemroot%\System32\Perfc009.dat и %Systemroot%\System32\Perfh009.dat
Чтобы восстановить основные библиотеки счетчиков производительности, выполните указанные ниже действия.
  1. Разверните файлы Perfc009.dat и
    Perfh009.dat. Эти файлы находятся на установочном диске Windows. Сжатые файлы находятся по адресам буква_диска:\i386\perfc009.da_ и буква_диска:\i386\perfh009.da_. Замените ими файлы, расположенные в папке %Systemroot%\System32.
  2. Запустите редактор реестра и найдите следующий раздел:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib
  3. Измените значение параметра Last Counter на 1846 (десятичное), а значение параметра Last Help на 1847 (десятичное).
  4. В следующем разделе реестра найдите разделы служб, содержащие подраздел производительности:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
  5. В подразделе производительности удалите следующие параметры (если они существуют):
    • First Counter
    • First Help
    • Last Counter
    • Last Help
    Также с помощью средства Exctrlst.exe можно найти установленные DLL-файлы библиотеки счетчиков производительности и удалить из реестра параметры DWORD. Теперь разделы реестра, отвечающие за счетчики производительности, работоспособны и содержат только основные системные счетчики.

    Примечание. Удаление параметров подраздела реестра производительности может вызвать сбой в работе установленных приложений .NET Framework при их следующем запуске. В этом случае выполните команду lodctr /R, приведенную в разделе "Повторное добавление расширенных счетчиков", для восстановления счетчиков производительности. Если не удалось устранить проблему, возникающую при запуске приложения .NET Framework, перейдите к разделу "Повторная установка пользовательского счетчика производительности сборки .NET Framework" этой статьи.

Повторное добавление расширенных счетчиков

Перед повторным добавлением расширенных счетчиков из списка служб необходимо определить, какой INI-файл используется для их загрузки.
  1. Откройте окно командной строки.
  2. В командной строке введите cd %Systemroot%\System32 и нажмите клавишу ВВОД.
  3. В командной строке введите findstr drivername *.ini и нажмите клавишу ВВОД.
  4. Запишите имя INI-файла для каждого драйвера из списка.
  5. Введите в командной строке приведенную ниже команду и нажмите клавишу ВВОД:
    lodctr <ini_файл>
    Примечание. В этой команде <ini_файл> представляет имя INI-файла для драйвера, который нужно перезагрузить.
    К примеру, если нужно перезагрузить драйвер ASP, обратите внимание на список из шага 4. Он показывает, что Axperf.ini является INI-файлом для драйвера ASP (axperf.ini:drivername=ASP). Таким образом, чтобы перезагрузить драйвер ASP, введите в командной строке lodctr axperf.ini и нажмите клавишу ВВОД.
  6. Повторите действие 5 для каждого INI-файла в списке.
  7. Перезагрузите компьютер.
Чтобы восстановить все счетчики производительности, включая расширенные счетчики и счетчики сторонних производителей, в Windows Server 2003 введите в командной строке указанные ниже команды. После каждой из команд следует нажимать клавишу ВВОД.
cd\windows\system32
lodctr /R
Примечания
  • /R — прописная буква. Для выполнения этой команды требуются права администратора.
  • На компьютере с 32-разрядной версией Windows XP команда Lodctr /R:<имя_файла> является стандартным способом восстановления строк реестра и сведений о счетчиках производительности с помощью имени файла.
В Windows Server 2003 можно восстановить все счетчики, так как все INI-файлы в папке C:\Windows\inf\009 для операционной системы на английском языке являются читаемыми.


Примечания
  • В Windows Server 2003 Compute Cluster Edition и Windows Server 2003 Datacenter Edition для обновления списка счетчиков требуется выполнить обработку отказа узла. Это необходимо сделать после выполнения действий, приведенных в разделе "Повторное добавление расширенных счетчиков", для основных и расширенных счетчиков.
  • В системах с приложениями, которые добавляют свои счетчики производительности, например Microsoft Exchange или SQL Server, INI-файл, используемый для загрузки счетчиков, может находиться в папке, отличной от %Systemroot%\System32. В этом случае INI-файлы можно найти в одной из папок приложения.
  • Если во время выполнения приведенных действий появляется сообщение об ошибке, связанное с библиотекой производительности, возможно, необходимо выгрузить и повторно загрузить DLL-библиотеки производительности для IIS.
    Дополнительные сведения о том, как это сделать, см. в указанной ниже статье базы знаний Майкрософт.

    267831 При загрузке счетчиков производительности в системный журнал заносится предупреждение с кодом события 2003

  • Если не удалось устранить проблему, возникающую при запуске приложения .NET Framework, перейдите к разделу "Повторная установка пользовательских счетчиков производительности сборки .NET Framework".

Повторная установка пользовательских счетчиков производительности сборки .NET Framework

Если все приведенные действия не помогли устранить проблему, возникающую при запуске приложения .NET Framework, возможно, необходимо восстановить счетчики производительности для пользовательского приложения .NET Framework. Для этого используйте параметр "/i" в установщике .NET Framework (Installutil.exe). Необходимо знать имена DLL-файлов, создающих счетчики производительности.

Пример

При выполнении этих операций и удалении счетчиков из реестра для всех служб, установленных в системе с Microsoft System Center Operations Manager 2007, может произойти сбой сервера управления. Эта ошибка происходит из-за того, что в INI-файлах для формы расширенных счетчиков не представлены модули службы настройки, службы SDK и записи в базу данных. Вместо этого они регистрируются во время установки. Поэтому при попытке запустить программу System Center Operations Manager 2007 может появится сообщение об ошибке, аналогичное следующему из-за отсутствия счетчиков производительности:

Тип события: Ошибка

Источник события: OpsMgr SDK Service

Категория события: Отсутствует

Код события: 26380

Дата: дата
Время: время
Пользователь: Н/д

Компьютер: MOM

Описание. Произошел сбой службы SDK System Center Operations Manager из-за необработанного исключения.

Чтобы устранить эту проблему в System Center Operations Manager 2007, необходимо повторно установить сборки .NET Framework, которые создают счетчики производительности. Используйте параметр "/i" в установщике .NET Framework (Installutil.exe) для повторной установки следующих сборок:
  • Microsoft.Mom.ConfigService.dll
  • Microsoft.Mom.Sdk.ServiceDataLayer.dll
  • Microsoft.Mom.DatabaseWriteModules.dll
  • Microsoft.EnterpriseManagement.HealthService.Modules.DataWarehouse.dll
Например, введите следующие команды в командной строке, нажимая после каждой из них клавишу ВВОД:
InstallUtil /i Microsoft.Mom.ConfigService.dll

InstallUtil /i Microsoft.Mom.Sdk.ServiceDataLayer.dll

InstallUtil /i Microsoft.Mom.DatabaseWriteModules.dll

InstallUtil /i Microsoft.EnterpriseManagement.HealthService.Modules.DataWarehouse.dll
Примечание. Для выполнения этих команд требуются права администратора.