Почему rphost грузит процессор на 100% и как это исправить?

Системный администратор 1С v8.3 (Обычные формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

Ситуация, когда рабочий процесс сервера 1С rphost.exe начинает потреблять все ресурсы процессора, является одной из самых сложных в администрировании. Особенно критично это выглядит, когда оперативная память свободна, а пользователи жалуются на «тормоза» даже при отсутствии активной работы. В этой статье мы подробно разберем, почему возникают такие скачки нагрузки, как проанализировать «ошибки страниц в секунду» и какие шаги предпринять для стабилизации системы.

Анализ влияния регламентных заданий

Первым делом проанализируем активность фоновых процессов, используя стандартные средства или внешние инструменты, такие как Повелитель регламентных заданий. Как показывает практика, даже если в консоли администрирования не видно активных сеансов, регламентные задания могут продолжать выполняться в фоновом режиме — для этого подойдёт мониторинг и уведомления о результатах регламентных заданий. Выясним причину: часто типовые конфигурации (например, Управление торговлей 10.3) запускают тяжелые процедуры индексации или обновления кэша.

Разберем, как проверить эту теорию:

  1. Зайдем в консоль администрирования серверов 1С (поможет расширенная консоль администрирования кластеров 1С) (для более глубокого анализа можно использовать монитор кластеров серверов).
  2. В свойствах каждой информационной базы установим флаг «Блокировка регламентных заданий включена».
  3. Если после этого нагрузка на rphost упала, значит, причина в одном из заданий.

Рассмотрим подробнее: часто виновником становится ОбновлениеИндексаПолнотекстовогоПоиска. Если база большая (от 10-15 ГБ), этот процесс может вызывать непрерывное чтение с диска и загрузку ЦП. Для этой задачи есть свертка и техническая оптимизация больших баз 1С.

Проблема совместимости платформы и старых конфигураций

Посмотрим на ситуацию со стороны движка 1С. Существует выявленная закономерность: старые конфигурации на обычных формах (УТ 10.3, КА 1.1) могут некорректно работать на свежих релизах платформы 8.3.12, 8.3.14 и выше. Это проявляется в аномальном росте счетчика «ошибок страниц в секунду» (Page Faults).

Проанализируем этот показатель: «ошибки страниц» не означают поломку памяти. Это сигнал системе, что процессу rphost требуются данные, которые уже выгружены из физической ОЗУ в файл подкачки на диск. Постоянное обращение к диску для подкачки данных «раскаляет» процессор.

Решение: Если вы используете старую конфигурацию, попробуйте протестировать работу на платформе версии 8.3.10.2699. Для быстрого переключения версий можно использовать консольное приложение для администрирования служб. Как показывает опыт коллег, переход на этот релиз часто снижает нагрузку на ЦП с 100% до стабильных 20-40% без изменения кода самой базы.

Оптимизация работы MS SQL Server и распределение памяти

Выясним, как взаимодействуют СУБД и сервер приложений, если они установлены на одной физической или виртуальной машине. Если sqlservr.exe не ограничен в потреблении памяти, он заберет на себя максимум доступного объема. В ответ на это операционная система Windows начнет принудительно урезать Working Set (рабочий набор памяти) процесса rphost, сбрасывая его данные в pagefile.sys.

Разберем по шагам правильную настройку (см. также подробную инструкцию по настройке регламентных операций MS SQL):

  1. Откроем SQL Server Management Studio.
  2. В свойствах сервера перейдем в раздел Memory.
  3. Установим Maximum server memory таким образом, чтобы операционной системе и процессам 1С оставалось не менее 4–8 ГБ свободного пространства.

Также крайне важно настроить политику «Lock Pages in Memory» (Закрепление страниц в памяти) для учетной записи, под которой запущен SQL и 1С. Это предотвратит вытеснение памяти в своп и снизит нагрузку на процессор, связанную с обработкой прерываний ввода-вывода.

Очистка кэша полнотекстового поиска (ППД)

Иногда обычного отключения регламентного задания недостаточно, если индекс уже поврежден. Процесс rphost может циклически пытаться обратиться к битым файлам в системной папке srvinfo. Проанализируем ситуацию, когда чтение идет из каталогов типа System Volume Information или внутренних папок регистрации 1С.

Выполним следующие действия:

  1. Остановим службу 1C:Enterprise 8.3 Server Agent.
  2. Перейдем в каталог C:\Program Files\1cv8\srvinfo\reg_1541\UUID_вашей_базы\.
  3. Найдем папку Index и полностью удалим её содержимое.
  4. Запустим службу заново.

Это заставит сервер пересоздать структуру индекса с нуля, что часто убирает «зацикливание» процесса rphost.

Использование Технологического журнала для глубокой диагностики

Если вышеописанные методы не помогли, нам необходимо увидеть, что именно делает процесс в момент прыжка нагрузки. Для этого настроим минимальный Технологический Журнал. Создадим файл logcfg.xml в каталоге C:\Program Files\1cv8\conf.

Пример структуры для отслеживания длительных операций и исключений:


<config xmlns="http://v8.1c.ru/7.4/get/logcfg">
  <log location="C:\LOGS\1C" history="2">
    <event>
      <eq property="Name" value="EXCP"/>
    </event>
    <event>
      <eq property="Name" value="PROC"/>
    </event>
    <property name="All"/>
  </log>
</config>

Проанализируем полученные логи: ищите события EXCP, которые повторяются сотни раз в секунду. Это может быть попытка обращения к несуществующему файлу или бесконечный цикл в коде при попытке записи в журнал регистрации.

Дополнительные настройки ОС и виртуализации

Разберем еще несколько критических моментов, которые часто упускают из виду:

Таким образом, решение проблемы 100% загрузки процессора всегда комплексно: от блокировки «невидимых» регламентных заданий до тонкой настройки взаимодействия с памятью на уровне операционной системы.

← На главную