Как найти причину высокой загрузки процессора (100%) процессами rphost на сервере 1С?

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

Ситуация, когда рабочие процессы сервера 1С (rphost.exe) внезапно начинают потреблять 100% ресурсов процессора, является критической для любой организации. Это приводит к "зависанию" сеансов, отвалу пользователей по таймауту и параличу работы всей системы. Часто перезагрузка службы помогает лишь временно, и проблема возвращается снова. Проанализируем, как системному администратору или программисту 1С вычислить "виновника" и устранить причину деградации производительности.

Шаг 1: Оперативный анализ через консоль администрирования кластера

Когда сервер уже "нагнулся", первым делом мы должны заглянуть в консоль администрирования серверов 1С Предприятия. Разберем, на какие колонки в списке "Сеансы" необходимо обратить внимание в первую очередь. Часто стандартный набор колонок не дает полной картины, поэтому добавим через настройку вида следующие параметры:

Рассмотрим ситуацию: если мы видим сеанс с огромным значением Время вызова (текущее) и низким Время вызова СУБД, мы нашли потенциального кандидата, который "греет" процессор вычислениями. Запишем его номер, имя пользователя и базу данных.

Шаг 2: Связка системных процессов с конкретными базами

Если на сервере крутится несколько информационных баз, бывает сложно понять, какой именно rphost (и, соответственно, какая база) создает нагрузку. Разберем методику точного сопоставления:

  1. Откроем Диспетчер задач Windows на вкладке "Подробности" (Details).
  2. Найдем процесс rphost.exe, который потребляет максимум ресурсов CPU, и запишем его PID (идентификатор процесса).
  3. Вернемся в консоль 1С в раздел Рабочие процессы. Там в колонке PID найдем наш идентификатор.
  4. Посмотрев свойства этого рабочего процесса или связанные с ним сеансы, мы увидим конкретную информационную базу.

Посмотрим на настройки кластера: если у вас включена опция "Один процесс на одну базу", диагностика упрощается, но помните, что это создает дополнительную нагрузку на менеджер кластера (rmngr) при большом количестве баз.

Шаг 3: Проблема журнала регистрации в формате SQLite

Выясним одну из скрытых причин "тормозов", характерную для платформ 8.3.10 и выше. Начиная с этих версий, 1С перешла на новый формат журнала регистрации — .lgd (SQLite). Проанализируем последствия: если файл журнала регистрации разрастается до гигантских размеров (например, более 10-20 ГБ), любая запись события в журнал может вызывать блокировку всего рабочего процесса.

Важный момент: если сеанс "просто набивает платежки", но при этом в базе включена полная регистрация всех действий (включая чтение), каждое открытие списка документов порождает сотни записей в огромный SQLite-файл. Процессор при этом будет занят не расчетами 1С, а очередями ожидания к дисковой подсистеме и блокировками файла базы данных журнала.

Рекомендуем проверить размер файлов в папке srvinfo\reg_1541\UUID_базы\1Cv8Log. Если вы видите файлы размером 30 ГБ и более, необходимо выполнить сокращение журнала регистрации или перевести его обратно в старый текстовый формат (.log), который более устойчив к большим объемам данных.

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

Если визуальный мониторинг не помог, перейдем к "тяжелой артиллерии" — настройке технологического журнала (ТЖ). Нам нужно отловить события, которые длятся аномально долго. Создадим файл logcfg.xml в папке conf сервера 1С.

Рассмотрим пример конфигурации ТЖ, которая будет собирать только длительные вызовы (более 15 секунд) и ошибки, не создавая при этом гигантских логов:


<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
    <log location="C:\Logs\1C_Performance" history="24">
        <event>
            <eq property="Name" value="EXCP"/>
        </event>
        <event>
            <eq property="Name" value="CALL"/>
            <ge property="Durationus" value="15000000"/>
        </event>
        <property name="all"/>
    </log>
</config>

После того как проблема повторится, проанализируем файлы логов. Нам нужно искать теги Context. Там будет указан конкретный метод встроенного языка (например, ОбработкаПроведения или какой-то экспортный метод общего модуля), который выполнялся в момент пиковой нагрузки.

Шаг 5: Правильное обслуживание и "чистка" сервера

Часто администраторы пытаются решить проблему простым перезапуском службы 1C:Enterprise Server. Однако это не всегда помогает, так как "зависшие" процессы rphost могут оставаться в памяти в виде "зомби". Разберем правильный алгоритм полной очистки сервера с помощью bat-скрипта. Это поможет гарантированно сбросить все сеансы и очистить временные файлы, которые также могут быть причиной проблем.

Разберем пример скрипта для обслуживания (замените пути на ваши):


set SERVICE_1C_NAME="1C:Enterprise 8.3 Server Agent (x86-64)"
set CNTX_PATH="C:\Program Files\1cv8\srvinfo\reg_1541"
set TEMP_PATH="C:\Windows\Temp"

echo Останавливаем службу 1С...
sc stop %SERVICE_1C_NAME%
timeout 10

echo Принудительно завершаем зависшие процессы...
taskkill /f /im "rphost.exe"
taskkill /f /im "rmngr.exe"
taskkill /f /im "ragent.exe"

echo Очищаем сессионные данные и кэш сервера...
DEL /Q /F /S %CNTX_PATH%\snccntx*
DEL /Q /F /S %TEMP_PATH%\*.*

echo Запускаем службу...
sc start %SERVICE_1C_NAME%

Обратите внимание на удаление файлов snccntx*. Это файлы сеансовых данных. Если в них накопились ошибки, сеансы могут восстанавливаться некорректно и сразу начинать грузить процессор после рестарта службы.

Дополнительные рекомендации

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

  1. Регламентные задания: Проверьте, не запускаются ли одновременно во всех 12 базах тяжелые задания (например, "Извлечение текста" или "Обновление индекса полнотекстового поиска"). Разнесите их по времени.
  2. Антивирус: Убедитесь, что папки с базами SQL, журналами 1С и временными файлами v8_* исключены из сканирования. Антивирусная проверка активного .lgd файла — прямой путь к 100% нагрузке CPU.
  3. Динамические списки: Если в базе БП 3.0 пользователи жалуются на тормоза при открытии списков, проверьте, не стоят ли там произвольные запросы с итогами. 1С может бесконечно пересчитывать эти итоги при каждом изменении данных другими пользователями.

Выяснив причину через ТЖ и консоль, вы сможете либо оптимизировать код, либо ограничить аппетиты конкретных пользователей, либо привести в порядок системные настройки сервера.

← На главную