Почему зависает агент сервера 1С и как это исправить?

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

Зависание службы агента сервера 1С — одна из самых сложных проблем для системного администратора и программиста. В отличие от явной ошибки, "зависание" часто не оставляет прямых следов, требуя комплексного анализа всей системы: от настроек кластера до внешних компонент защиты. В данной статье мы разберем ситуацию на примере работы конфигурации Альфа-Авто 6, где сервер 1С перестает отвечать раз в несколько дней, и выясним, как найти и устранить причину сбоя.

Шаг 1: Настройка технологического журнала для поиска исключений

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

Создадим файл logcfg.xml в каталоге настроек сервера (обычно это C:\Program Files\1cv8\conf). Нас интересует событие EXCP (Exception), которое регистрирует все исключительные ситуации, возникающие в процессе работы. Рассмотрим пример конфигурации файла:


<config xmlns="http://v8.1c.ru/7.4/config">
  <log location="C:\Logs\1C_Excp" history="72">
    <event>
      <eq property="Name" value="EXCP"/>
    </event>
    <property name="All"/>
  </log>
</config>

После активации ТЖ проанализируем полученные логи. В нашей ситуации часто встречается ошибка SeanceContextException. Она означает попытку получения неинициализированного значения параметра сеанса. Хотя сама по себе эта ошибка может казаться прикладной, в контексте защищенных решений (как Рарус или БИТ) она часто свидетельствует о том, что сеанс потерял связь с внешней компонентой защиты или ключом, и при попытке обращения к защищенным функциям процесс "падает" или блокируется.

Шаг 2: Анализ журналов Windows и поиск сбойного модуля

Если служба агента "зависает намертво" или процесс rphost завершается аварийно, информация об этом обязательно попадает в системный журнал Windows. Разберем, как правильно провести этот анализ.

  1. Откроем Просмотр событий (Event Viewer).
  2. Перейдем в раздел Журналы Windows — Приложение (Application).
  3. Будем искать события с уровнем "Ошибка" и источником Application Error, имеющие Event ID 1000.

В описании такой ошибки крайне важно обратить внимание на строку "Имя сбойного модуля" (Faulting module name). Проанализируем типичные ситуации:

В случае с Альфа-Авто 6, обращение к защищенному модулю ЗащищенныеФункцииСервер вызывает внешнюю компоненту. Если компонента защиты имеет утечку памяти или несовместима с текущей сборкой платформы 8.3.14/8.3.16, это приводит к критической ошибке доступа к памяти (Access Violation), после чего rphost перестает отвечать, а менеджер кластера не может его корректно перезапустить.

Шаг 3: Оптимизация настроек рабочего сервера 1С

Стандартные настройки кластера 1С часто не подходят для нагруженных систем (70-90 пользователей). Проанализируем параметры рабочего сервера и изменим их для повышения стабильности. Это особенно важно, если вы используете лицензии уровня КОРП, дающие расширенные возможности управления процессами.

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

  1. Количество информационных баз на процесс: Установим значение 1. Это обеспечит максимальную изоляцию. Если база Альфа-Авто вызовет падение процесса из-за ошибки в компоненте защиты, это не затронет пользователей Бухгалтерии, работающих на том же сервере.
  2. Количество соединений на процесс: Рекомендуется ограничить до 25-30. Большое количество соединений в одном процессе rphost увеличивает вероятность того, что ошибка одного пользователя "уронит" работу всех остальных.
  3. Интервал перезапуска процессов: Выставим 86400 секунд (24 часа). Принудительный перезапуск процессов раз в сутки помогает бороться с постепенными утечками памяти в компонентах защиты.
  4. Выключенные процессы: Установим параметр "Останавливать неактивные процессы через" (например, 3000 секунд), чтобы система очищала старые зависшие процессы автоматически.

Шаг 4: Проблема системы защиты и драйверов ключа

Выясним причину, по которой rphost получает сигнал Stop signal received (windows). Часто это происходит из-за того, что сервер защиты (например, Сервер защиты Рарус или СЛК) теряет физический или программный ключ. Если ключ проброшен в виртуальную машину через USB-over-IP или средства гипервизора, малейший сетевой лаг может привести к тому, что внешняя компонента внутри 1С заблокирует поток в ожидании ответа от ключа.

Проанализируем следующие рекомендации:

Шаг 5: Очистка серверного кэша и перерегистрация компонент

Иногда "фантомные" зависания связаны с повреждением временных файлов сервера 1С. Рассмотрим процедуру полной очистки системы:

  1. Остановим службу Агент сервера 1С:Предприятия.
  2. Остановим службу сервера защиты Рарус.
  3. Перейдем в каталог реестра кластера (обычно C:\Program Files\1cv8\srvinfo\reg_1541).
  4. Удалим содержимое папки snccntx — это сеансовые данные, повреждение которых часто вызывает SeanceContextException.
  5. Очистим временные файлы пользователя, под которым запускается служба 1С (Local Settings\Temp).
  6. Очистим папку кэша системы защиты в C:\ProgramData\1C-Rarus\ (или аналогичную для вашей версии).
  7. Запустим службы и выполним первый вход под администратором для перерегистрации внешних компонент.

Посмотрим на ситуацию под другим углом: если зависание происходит стабильно раз в 1-2 дня, проверим регламентные задания. Возможно, в Альфа-Авто запускается тяжелое задание (например, обмен с бухгалтерией или загрузка прайсов), которое конфликтует с системой защиты или вызывает переполнение памяти в rphost. Проанализируем консоль администрирования в момент зависания: если мы видим сеансы, которые "захватили СУБД" на длительное время, проблема может быть в неоптимизированном запросе, который блокирует поток, а защита лишь усугубляет ситуацию.

Суммируя вышесказанное, наиболее вероятный сценарий решения выглядит так: изоляция базы Альфа-Авто в отдельный рабочий процесс (1 база на процесс), обновление сервера лицензирования Рарус и мониторинг Event Viewer на предмет конкретных DLL-ошибок. Эти шаги позволяют превратить "непонятное зависание" в конкретную техническую задачу по обновлению или замене дефектного модуля.

← На главную