При работе с крупными информационными базами, такими как 1С:Зарплата и Управление Персоналом 2.5, пользователи часто сталкиваются с необходимостью формирования крайне тяжелых регламентированных отчетов (например, РСВ). Если количество сотрудников исчисляется десятками тысяч, процесс может занимать более суток. В таких ситуациях система часто прерывает работу с критической ошибкой «Сеанс отсутствует или удален». Проанализируем причины этой проблемы и разберем по шагам методы ее решения.
Прежде всего, выясним причину, по которой сервер 1С «забывает» о существующем сеансе. Ошибка «Сеанс отсутствует или удален» обычно означает, что рабочий процесс rphost, в рамках которого выполнялся расчет отчета, был аварийно завершен или перезапущен платформой, а сеанс не успел корректно «переехать» на новый процесс.
В платформе 1С:Предприятие 8.3 реализован механизм мониторинга потребления ресурсов. Рассмотрим подробнее основные параметры кластера, которые могут влиять на стабильность длинных транзакций:
Проблема заключается в следующем: когда формируется гигантский отчет, процесс rphost начинает потреблять значительный объем ОЗУ. Как только он превышает «Допустимый объем памяти», сервер 1С запускает новый экземпляр rphost, а текущий помечает как выключенный. Однако тяжелый отчет — это зачастую один неразрывный запрос к базе данных или длинный цикл на встроенном языке. Сеанс не может переключиться на другой процесс до завершения текущей операции. Если время остановки выключенного процесса истекает раньше, чем отчет доформировался, сервер принудительно убивает старый процесс вместе с вашим отчетом. Результат — та самая ошибка.
Самый эффективный и быстрый способ решить проблему — изменить настройки потребления памяти. Выполним следующие действия:
16 777 216 (16 Гб) или даже 0. Значение 0 означает, что лимит не ограничен, и сервер будет полагаться на механизмы ОС.3600 или более секунд (на время формирования сверхтяжелого отчета можно поставить и больше), чтобы дать системе шанс дождаться окончания расчета.Важный нюанс: после нажатия кнопки «Применить» изменения вступают в силу немедленно для новых процессов, однако для надежности в случае критических зависаний может потребоваться перезапуск службы 1C:Enterprise 8.3 Server Agent.
Если изменение настроек памяти не помогло, нам необходимо точно выяснить, кто именно «убивает» сеанс. Для этого настроим Технологический журнал (ТЖ). Рассмотрим, как создать файл конфигурации ТЖ, чтобы отловить падение процесса.
Создадим текстовый файл с именем 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>
Разберем, на что обратить внимание в логах:
Иногда причина кроется не в памяти, а в сетевой инфраструктуре. Если отчет формируется более 24 часов, сетевое соединение может быть разорвано операционной системой Windows из-за отсутствия активности (с точки зрения сети пакеты не ходят, пока 1С ждет ответа от SQL).
Проанализируем настройки реестра на сервере. Рекомендуется изменить параметры KeepAliveTime и KeepAliveInterval в ветке:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Установка KeepAliveTime в значение, превышающее время формирования отчета (в миллисекундах), позволит избежать разрыва соединения по таймауту на уровне ОС.
Поскольку отчет РСВ активно использует временные таблицы, выясним состояние базы tempdb. Рассмотрим типичные проблемы на стороне СУБД:
tempdb, достаточно свободного места для роста файлов. Для 15 000 сотрудников объем временных данных может достигать десятков гигабайт.Remote Query Timeout установлен в значение 600 секунд, длительный запрос может быть прерван самой СУБД. Рекомендуется установить этот параметр в 0 (бесконечно).Учитывая, что ЗУП 2.5 является устаревшей программой, расчеты в ней могут быть неоптимизированными для современных релизов платформы 8.3. Рассмотрим дополнительные меры:
.mdf, .ldf) и временные каталоги 1С (папки AppData\Local\Temp). Постоянное сканирование временных файлов при построении отчета может замедлить процесс в 2–3 раза.Таким образом, комбинируя увеличение лимитов памяти в настройках кластера и оптимизацию серверных параметров, можно добиться стабильного формирования даже самых тяжелых отчетов, требующих более суток на обработку данных.