Почему при формировании длительного отчета возникает ошибка «Сеанс отсутствует или удален» и как это исправить

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

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

Разбор причины: механизм управления процессами в кластере 1С

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

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

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

Решение 1: Настройка параметров кластера сервера 1С

Самый эффективный и быстрый способ решить проблему — изменить настройки потребления памяти. Выполним следующие действия:

  1. Откроем консоль «Администрирование серверов 1С Предприятия».
  2. Перейдем к свойствам вашего кластера (обычно «Локальный кластер»).
  3. Проанализируем значение параметра «Допустимый объем памяти». Если там установлено фиксированное значение (например, 4 Гб), это и есть узкое место.
  4. Увеличим это значение до разумного предела, исходя из физической памяти сервера. Например, установим 16 777 216 (16 Гб) или даже 0. Значение 0 означает, что лимит не ограничен, и сервер будет полагаться на механизмы ОС.
  5. Параметр «Выключенные процессы останавливать через» рекомендуется увеличить до 3600 или более секунд (на время формирования сверхтяжелого отчета можно поставить и больше), чтобы дать системе шанс дождаться окончания расчета.

Важный нюанс: после нажатия кнопки «Применить» изменения вступают в силу немедленно для новых процессов, однако для надежности в случае критических зависаний может потребоваться перезапуск службы 1C:Enterprise 8.3 Server Agent.

Решение 2: Диагностика через Технологический журнал

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

Создадим текстовый файл с именем logcfg.xml и разместим его в каталоге C:\Program Files\1cv8\conf (для сервера). Содержимое файла должно быть следующим:


<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1C_Logs" history="72">
    <event>
      <eq property="Name" value="PROC"/>
    </event>
    <event>
      <eq property="Name" value="EXCP"/>
    </event>
    <event>
      <eq property="Name" value="ADMIN"/>
    </event>
    <property name="all">
    </property>
  </log>
</config>

Разберем, на что обратить внимание в логах:

Решение 3: Настройка сетевых параметров (TCP/IP KeepAlive)

Иногда причина кроется не в памяти, а в сетевой инфраструктуре. Если отчет формируется более 24 часов, сетевое соединение может быть разорвано операционной системой Windows из-за отсутствия активности (с точки зрения сети пакеты не ходят, пока 1С ждет ответа от SQL).

Проанализируем настройки реестра на сервере. Рекомендуется изменить параметры KeepAliveTime и KeepAliveInterval в ветке:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Установка KeepAliveTime в значение, превышающее время формирования отчета (в миллисекундах), позволит избежать разрыва соединения по таймауту на уровне ОС.

Решение 4: Оптимизация SQL-сервера

Поскольку отчет РСВ активно использует временные таблицы, выясним состояние базы tempdb. Рассмотрим типичные проблемы на стороне СУБД:

  1. Переполнение TempDB: убедимся, что на диске, где расположен tempdb, достаточно свободного места для роста файлов. Для 15 000 сотрудников объем временных данных может достигать десятков гигабайт.
  2. Remote Query Timeout: проверим настройки SQL-сервера. Если параметр Remote Query Timeout установлен в значение 600 секунд, длительный запрос может быть прерван самой СУБД. Рекомендуется установить этот параметр в 0 (бесконечно).

Практические советы по работе с ЗУП 2.5

Учитывая, что ЗУП 2.5 является устаревшей программой, расчеты в ней могут быть неоптимизированными для современных релизов платформы 8.3. Рассмотрим дополнительные меры:

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

← На главную