Почему процесс rmngr.exe в 1С:Предприятии грузит процессор на 30% и как это исправить?

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

Проблема, когда процесс rmngr.exe, являющийся менеджером кластера сервера 1С:Предприятия, начинает потреблять значительные ресурсы центрального процессора (ЦП), является достаточно распространенной для администраторов 1С. Такая ситуация приводит к замедлению работы всей системы и может быть вызвана множеством факторов, от настроек платформы до аппаратных проблем. В этом руководстве мы подробно разберем основные причины этого явления и предложим проверенные способы решения.

Главная причина: Журнал регистрации нового формата (.lgd)

Мы выяснили, что одной из наиболее частых причин высокой нагрузки на процессор со стороны rmngr.exe является использование нового формата журнала регистрации. Этот формат, появившийся в платформе 1С:Предприятие начиная с версии 8.3.5, основан на базе данных SQLite и использует файлы с расширением .lgd. В условиях высоконагруженных систем или при большом объеме журнала регистрации (более 10-15 Гб) новый формат может демонстрировать низкую производительность. Это приводит к постоянным обращениям rmngr.exe к этим файлам, что и вызывает значительную загрузку ЦП даже при отсутствии активных пользователей.

Пользователи подтверждают проблему с новым форматом журнала в различных версиях платформы, включая 8.3.7.1790, 8.3.7.2027 и даже 8.3.10.2650. Часто именно сервис EventLogService, ответственный за журнал регистрации, является тем компонентом, который вызывает нагрузку.

Переход на старый формат журнала регистрации (.lgf)

Для устранения проблемы с производительностью журнала регистрации мы рекомендуем перевести его на старый формат. Разберем шаги, которые необходимо выполнить:

  1. Остановите службу Агента Сервера 1С:Предприятия. Это критически важный шаг, так как файлы журнала блокируются работающим сервером. Мы должны убедиться, что все пользователи отключены от баз и служба 1С остановлена. Если вы не остановите службу, файлы могут быть заблокированы и их не удастся удалить или создать.
  2. Найдите каталог базы данных. Для каждой информационной базы, где наблюдается проблема, перейдите в соответствующий каталог. Мы обычно находим его по пути: <Путь_к_кластеру_серверов_1С>\srvinfo\reg_<ID_базы>\1Cv8Log\. <ID_базы> — это уникальный идентификатор вашей информационной базы в кластере 1С. Вы можете узнать его в консоли администрирования серверов 1С, открыв свойства нужной базы.
  3. Удалите файлы нового формата. В найденной папке 1Cv8Log мы удаляем все файлы с расширениями .lgd и .lgd-journal. Если мы видим файлы типа .lgd.1, .lgd.2 и т.д., их также следует удалить. Эти файлы представляют собой части или журналы изменений базы SQLite.
  4. Создайте пустой файл старого формата. В той же папке 1Cv8Log мы создаем новый, абсолютно пустой файл с именем 1Cv8.lgf. Важно убедиться, что у файла нет двойного расширения (например, 1Cv8.lgf.txt). Для этого можно создать текстовый файл, затем переименовать его, удалив расширение .txt. Windows может спросить о смене расширения, мы должны подтвердить.
  5. Запустите службу Агента Сервера 1С:Предприятия. После выполнения предыдущих шагов мы запускаем службу обратно. Сервер 1С теперь будет использовать новый файл 1Cv8.lgf для ведения журнала регистрации. Нагрузка на ЦП процессом rmngr.exe, вызванная журналом, должна существенно снизиться.

Важные замечания, которые мы должны учитывать:

Диагностика и определение виновного сервиса: "Менеджер под каждый сервис"

Если после решения проблемы с журналом регистрации нагрузка сохраняется, или мы хотим более точно определить, какой именно сервис вызывает нагрузку, мы можем воспользоваться настройкой "Менеджер под каждый сервис". Это позволяет разделить службы менеджера кластера на отдельные процессы rmngr.exe с уникальными идентификаторами (PID), что значительно упрощает выявление "виновника".

Пошаговая диагностика:

  1. Включите настройку "Менеджер под каждый сервис". Мы открываем консоль администрирования серверов 1С:Предприятия. Переходим к свойствам нашего рабочего сервера. В настройках мы устанавливаем флаг "Менеджер под каждый сервис". Важно: Эта настройка приводит к кратковременному переподключению пользовательских сеансов, но не к их потере. Тем не менее, использовать ее для длительной работы не рекомендуется. Она предназначена именно для диагностики и должна быть отключена после устранения проблемы.
  2. Наблюдайте за процессами. После включения настройки в Диспетчере задач (для Windows) или используя утилиты top/htop (для Linux) мы увидим несколько процессов rmngr.exe. Мониторим их потребление ЦП. Мы ищем тот процесс, который активно нагружает процессор.
  3. Идентифицируйте сервис по PID. Когда мы обнаружим процесс rmngr.exe, который активно потребляет ЦП, мы записываем его PID. Затем в консоли администрирования 1С:Предприятия, просматривая список сервисов кластера, мы сможем сопоставить PID с конкретным сервисом. Мы часто наблюдаем, что причиной становится EventLogService (сервис журнала событий), подтверждая проблему с журналом регистрации.
  4. Примите меры. Если мы определили конкретный сервис, как в случае с EventLogService, и проблема связана с журналом регистрации, то описанные выше шаги по переключению на .lgf должны помочь. Если виновником является другой сервис, это дает нам направление для дальнейшего расследования.
  5. Отключите настройку после диагностики. После того как причина найдена и устранена, мы обязательно отключаем настройку "Менеджер под каждый сервис", чтобы вернуть кластер к стандартному режиму работы, объединив процессы менеджера.

Другие потенциальные причины и методы решения

Помимо проблем с журналом регистрации, существуют и другие факторы, которые могут вызывать высокую загрузку ЦП процессом rmngr.exe. Мы рассмотрим их подробнее, чтобы иметь полный арсенал для решения проблемы.

1. Фоновые и регламентные задания

Активная работа многочисленных или некорректно настроенных фоновых и регламентных заданий может косвенно или напрямую влиять на работу rmngr.exe. Например, интенсивное обновление индекса полнотекстового поиска на больших базах с частыми изменениями данных может значительно нагружать процессор.

  1. Диагностика: Мы можем проверить список выполняемых фоновых заданий в консоли администрирования 1С или непосредственно в конфигурации 1С через соответствующий пункт меню. Мы ищем задания, которые выполняются слишком часто или слишком долго.
  2. Решение:
    • Отключите ненужные задания. Если какие-либо регламентные задания не используются или их функционал не актуален, их следует отключить. Мы снизим общую нагрузку на сервер.
    • Настройте расписание. Мы переносим выполнение ресурсоемких заданий (например, закрытие месяца, объемные отчеты, обновление индекса полнотекстового поиска) на нерабочее время или периоды минимальной активности пользователей.
    • Полнотекстовый поиск. Если полнотекстовый поиск не используется в нашей системе, его можно полностью отключить в настройках конфигурации. Он часто включен по умолчанию для всех объектов и может генерировать существенную нагрузку на сервер 1С.

2. Аппаратное обеспечение

Недостаточная производительность аппаратного обеспечения сервера также может стать причиной проблем. rmngr.exe может загружать ЦП, ожидая ресурсов.

  1. Медленные дисковые подсистемы: Если один из дисков в RAID-массиве начинает "сыпаться" (появляются ошибки чтения/записи) или скорость дисковой подсистемы в целом низка, это может приводить к задержкам при чтении/записи данных, включая файлы журнала и временные файлы. Мы наблюдаем, что это увеличивает нагрузку на ЦП при ожидании дисковых операций. Необходимо провести диагностику дисковой подсистемы.
  2. Недостаток оперативной памяти: Нехватка ОЗУ может привести к активному использованию файла подкачки (свопингу), что замедляет работу всей системы и увеличивает нагрузку на ЦП, поскольку процессор тратит время на управление памятью и дисковые операции вместо выполнения полезной работы. Мы должны убедиться, что серверу достаточно ОЗУ.
  3. Настройка SQL-сервера: Если на одном сервере с 1С установлен SQL-сервер, неправильно настроенный SQL-сервер, который потребляет всю доступную ОЗУ, может оставлять недостаточно ресурсов для сервера 1С. Мы должны ограничить потребление памяти SQL-сервером, чтобы выделить достаточно ресурсов для 1С.

3. Антивирусное программное обеспечение

Антивирус, работающий на сервере 1С или сервере СУБД, может значительно влиять на производительность. Он сканирует каждый файл, к которому обращаются процессы 1С и SQL, создавая дополнительную нагрузку.

  1. Решение: Мы настраиваем исключения для папок, где расположены файлы 1С:Предприятия (каталоги сервера 1С, каталоги информационных баз, рабочие каталоги кластера), а также для папок и процессов SQL-сервера. Для диагностики можно временно отключить антивирус и проверить, изменится ли нагрузка.

4. Обновление платформы

Иногда проблемы с производительностью являются известными ошибками определенных версий платформы 1С. Обновление до более стабильного и свежего релиза может решить проблему.

  1. Решение: Мы рассматриваем возможность обновления платформы 1С:Предприятия до последней стабильной версии. Мы видели примеры, когда обновление с 8.3.6.2152 до 8.3.6.2299 решало проблему высокой нагрузки rmngr.exe. Разработчики постоянно выпускают исправления и оптимизации.

5. Спящие сеансы

Большое количество "спящих" пользовательских сеансов, которые 1С по умолчанию хранит до суток, может приводить к периодической активности rmngr.exe для их обработки и поддержания.

  1. Решение: В настройках информационной базы в консоли администрирования сервера 1С:Предприятия мы уменьшаем время жизни спящих сеансов. Это помогает снизить количество обрабатываемых rmngr.exe сеансов и, следовательно, его нагрузку.

6. Неоптимальный прикладной код

Хотя rmngr.exe в основном выполняет системные задачи, ошибки или неэффективные запросы в прикладном коде конфигурации могут косвенно влиять на стабильность и производительность всего кластера. Это может приводить к проблемам с другими процессами сервера (например, rphost.exe), которые затем могут влиять на rmngr.exe.

  1. Диагностика: Для выявления проблем с прикладным кодом используется Технологический журнал (ТЖ) 1С. Он позволяет протоколировать события в системе и выявлять длительные серверные вызовы, ресурсоемкие операции и ошибки, которые могут быть причиной каскадных проблем.

Инструменты для детальной диагностики

Для глубокого анализа проблемы и выявления ее первопричин мы рекомендуем использовать следующие инструменты. Они помогут нам получить подробную информацию о состоянии сервера и процессов.

  1. Диспетчер задач (Windows) / Resource Monitor / top / htop (Linux): Это наши первые помощники для быстрого выявления процессов, потребляющих наибольшее количество ресурсов ЦП и памяти. Мы регулярно используем их для первоначальной оценки ситуации.
  2. Process Explorer (Windows Sysinternals): Предоставляет более детальную информацию об активности процесса, включая список открытых файлов, потоков, используемых библиотек, иерархию процессов. Это инструмент, который мы применяем для глубокого анализа конкретного процесса rmngr.exe.
  3. Технологический журнал (ТЖ) 1С:Предприятия: Мощный инструмент для протоколирования событий на сервере 1С. Мы настраиваем его для отслеживания вызовов методов, ошибок, блокировок, выполнения фоновых заданий и многого другого, что помогает выявить проблемные сценарии на уровне платформы и конфигурации.
  4. ProcDump: Утилита для создания дампов процессов, которые затем могут быть использованы для более глубокого анализа проблемы (например, с помощью отладчика Windbg) и обращения в службу поддержки 1С с максимально полной информацией.

Мы рассмотрели наиболее распространенные причины высокой загрузки ЦП процессом rmngr.exe и предложили комплексные подходы к диагностике и устранению этих проблем. Начиная с проверки журнала регистрации и заканчивая анализом фоновых заданий и аппаратных ресурсов, эти шаги помогут вам восстановить стабильную и производительную работу вашей системы 1С:Предприятия. Помните, что последовательная диагностика и методичное применение решений приведут к успеху.

← На главную