Почему останавливается служба Агент сервера 1С:Предприятия и как восстановить ее работу?

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

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

Анализ причин сбоя службы агента сервера

Для эффективного восстановления работы сервера выясним причину аварийного завершения. Опыт администрирования и разбор аварийных ситуаций показывают, что падение процесса ragent.exe чаще всего связано со следующими факторами:

  1. Ошибки конкретного релиза платформы: некоторые версии платформы содержат критические ошибки, приводящие к быстрому неконтролируемому расходу оперативной памяти рабочими процессами кластера (rphost.exe) или менеджером кластера (rmngr.exe), а также к падению службы при выполнении регламентных заданий.
  2. Повреждение файлов конфигурации кластера: в каталоге данных сервера srvinfo (или svrinfo) хранятся списки баз, кластеров и их параметров в файле 1CV8Reg.lst. При некорректном завершении работы ОС или сбое записи файл может оказаться поврежден или заменен пустым файлом с нулевым размером.
  3. Конфликт прав доступа к файловой системе: если служба запускается под специальной сервисной учетной записью (например, USR1CV8), у нее могут отсутствовать права на запись в рабочий каталог данных кластера или в профиль временных файлов.
  4. Зависшие «процессы-зомби» в памяти: после аварийной остановки службы в операционной системе могут остаться незавершенные экземпляры rmngr.exe или rphost.exe, которые продолжают блокировать системные порты (1540, 1541, 1560–1591). Вновь запускаемый агент не может открыть прослушивание сокетов и аварийно закрывается.
  5. Повреждение журнала регистрации: падение именно в момент открытия базы данных часто вызывается нарушением целостности SQLite-файла журнала регистрации 1Cv8.lgd или текстовых журналов в каталоге 1Cv8Log.

Способ 1. Проверка ошибок релиза платформы и переход на стабильную сборку

Рассмотрим ситуацию, когда падение происходит циклично через несколько часов работы или при выполнении фоновых заданий. В истории платформы неоднократно отзывались проблемные сборки (например, 8.2.15.318 была экстренно заменена на 8.2.15.319 из-за критических утечек памяти при регламентных заданиях и работе сеансовых данных кластера).

Разберем по шагам, как проверить и исправить ситуацию:

  1. Откроем Просмотр событий Windows (журналы Application и System) и проанализируем ошибки, зарегистрированные источником 1CV8 или механизмом дампов. Если в описании события фигурирует падение модулей платформы с кодами исключений c0000005 (Access Violation), это указывает на критический программный сбой ядра.
  2. Проверим текущую версию установленной платформы через список программ или консоль администрирования.
  3. Ознакомимся со списком исправленных ошибок на официальном портале поддержки для смежных версий. Если используемый релиз имеет статус отозванного или в более новой сборке заявлено исправление критической ошибки управления памятью процессов кластера, выполним обновление платформы до актуального стабильного релиза.

Способ 2. Восстановление и сброс каталога данных кластера (srvinfo)

Если служба вылетает сразу после запуска или в момент открытия базы клиентом, наиболее вероятный виновник — поврежденное состояние файлов реестра кластера. Посмотрим на алгоритм диагностики каталога данных кластера серверов:

  1. Остановим службу Агент сервера 1С:Предприятия в оснастке services.msc.
  2. Перейдем в каталог данных кластера. По умолчанию он расположен по пути: C:\Program Files\1cv8\srvinfo (или C:\Program Files (x86)\1cv8\srvinfo для 32-разрядного сервера). При использовании версий 8.2 путь может быть C:\Program Files\1cv82\srvinfo.
  3. Зайдем в подпапку кластера (по умолчанию reg_1541) и проверим файл 1CV8Reg.lst. Обратим внимание на его размер. Если размер равен 0 байт либо рядом присутствует резервная копия (например, 1CV8Reg.lst.bak или копия, созданная операционной системой), то причина сбоя ясна: агент не может прочитать структуру баз.
  4. Если рядом есть неповрежденная копия файла, восстановим ее, вернув оригинальное имя 1CV8Reg.lst.
  5. Если резервной копии нет или файл замусорен, выполним сброс настроек. Важно: перед выполнением операции зафиксируем список баз кластера (имена баз, имена SQL-серверов и баз СУБД).
  6. Переместим все содержимое каталога srvinfo во временную папку-архив за пределами рабочего пути.
  7. Запустим службу агента. Служба создаст чистую структуру каталогов и дефолтный файл реестра. После этого откроем консоль Администрирование серверов 1С:Предприятия и повторно зарегистрируем информационные базы в кластере. Сами данные в СУБД при этом не затрагиваются.

Способ 3. Проверка прав учетной записи службы и каталогов Temp

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

  1. Откроем свойства службы Агент сервера 1С:Предприятия, перейдем на вкладку Вход в систему. Выясним, под какой учетной записью стартует процесс.
  2. Откроем проводник, перейдем к папке srvinfo, вызовем ее свойства и на вкладке Безопасность убедимся, что учетная запись (USR1CV8 либо системная учетная запись, если выбран запуск от имени системы) имеет права Полный доступ на данную папку, подпапки и все файлы.
  3. Очистим каталог временных файлов. Служба активно использует временные файлы при трансляции запросов и формировании сеансовых данных. Если служба работает под USR1CV8, путь к каталогу: C:\Users\USR1CV8\AppData\Local\Temp. Если служба настроена от имени системы, путь: C:\Windows\Temp.
  4. Остановим службу, полностью удалим накопленные временные файлы из соответствующей папки Temp и повторно запустим службу. Это исключает падения, вызванные переполнением каталога или попыткой переписать заблокированный временный файл.

Способ 4. Устранение зависших процессов и конфликтов сетевых портов

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

  1. Остановим службу 1C:Enterprise Server Agent.
  2. Откроем Диспетчер задач на вкладке Подробности (или утилиту Process Hacker / Process Explorer).
  3. Проверим наличие процессов с именами ragent.exe, rmngr.exe, rphost.exe, а также вспомогательного процесса отладки dbgs.exe.
  4. Если процессы присутствуют, завершим их принудительно (Снять задачу / End Process Tree).
  5. Запустим командную строку от имени администратора и проверим, свободны ли порты по умолчанию:
    
    netstat -ano | findstr "1540"
    netstat -ano | findstr "1541"
    
  6. Если порты свободны, запускаем службу агента штатным образом.

Способ 5. Локализация падений, вызванных журналом регистрации

Если служба падает исключительно при открытии определенной информационной базы, выясним состояние ее журнала регистрации. Внутри каталога кластера (например, srvinfo\reg_1541) каждая база представлена подкаталогом с идентификатором UUID базы.

  1. Определим идентификатор проблемной базы в свойствах базы через консоль администрирования.
  2. Перейдем в каталог srvinfo\reg_1541\<Идентификатор_Базы>.
  3. Найдем подкаталог 1Cv8Log. Остановим службу и переименуем данную папку (например, в 1Cv8Log_old).
  4. Запустим службу агента и попробуем зайти в базу. Если база открылась без сбоев, а служба продолжает работать стабильно, значит, имел место сбой индекса SQLite журнала 1Cv8.lgd. После этого поврежденный журнал можно переиндексировать специальными утилитами SQLite либо архивировать и вести журнал заново.

Способ 6. Настройка параметров кластера и восстановления службы

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

  1. В свойствах кластера в утилите администрирования настроим параметры управления памятью: укажем Допустимый объем памяти для рабочих процессов и Интервал превышения допустимого объема памяти. При достижении лимита кластер автоматически переведет нагрузку на новый чистый процесс rphost.exe, а старый будет мягко завершен без вылета агента.
  2. В свойствах службы в оснастке Windows перейдем на вкладку Восстановление и установим для первого, второго и последующих сбоев действие: Перезапуск службы с интервалом в 1 минуту. Это обеспечит автоматический подъем сервиса в случае кратковременных единичных коллизий.
← На главную