Как устранить падение сервера 1С, разрывы сеансов и конфликты блокировок при росте базы данных?

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

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

1. Диагностика узких мест через Технологический журнал и мониторинг СУБД

Когда система работала стабильно, а после резкого ввода большого объема данных (например, нескольких тысяч документов реализации) начались таймауты и зависания, первоочередной задачей становится сбор объективных данных. Выясним причину через настройку инструментов диагностики:

  1. Настройка Технологического журнала (ТЖ): проанализируем события EXCP (исключительные ситуации и падения рабочих процессов), TLOCK (управляемые блокировки) и TTIMEOUT (таймауты ожидания блокировок). Если в конфигурации не менялся код, увеличение объема данных приводит к тому, что неоптимальные запросы вместо сканирования по индексу начинают выполнять полное сканирование таблиц (Table Scan / Index Scan), надолго захватывая ресурсы.
  2. Проверка журналов операционной системы и СУБД: проанализируем системный журнал Windows (System и Application) на предмет аварийных завершений процессов rphost.exe, rmngr.exe и ошибок выделения памяти. В журнале SQL Server проверим наличие сообщений о нехватке дискового пространства или блокировках пула памяти.
  3. Мониторинг дисковой подсистемы: оценим длину очереди диска (Avg Disk Queue Length) и время отклика (Disk Sec/Transfer). При массовом проведении документов перегрузка дисков временными таблицами tempdb и журналом транзакций приводит к катастрофическому падению скорости работы всей системы.

2. Балансировка оперативной памяти между 1С и MS SQL Server

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

  1. Ограничение максимального объема памяти SQL Server: по умолчанию MS SQL Server стремится занять всю доступную физическую RAM. В результате рабочим процессам rphost.exe не хватает памяти для выполнения тяжелых отчетов или пакетного проведения документов, из-за чего процесс аварийно завершается операционной системой. Откроем свойства сервера в SQL Server Management Studio (SSMS), перейдем в раздел Memory и зададим параметр Max Server Memory, оставив достаточный объем памяти для ОС и процессов 1С.
  2. Настройка перезапуска рабочих процессов в кластере 1С: в консоли администрирования кластера серверов 1С настроим параметры кластера: укажем Допустимый объем памяти и Интервал перезапуска рабочих процессов. Это позволит серверу плавно перезапускать рабочие процессы до того, как они исчерпают лимиты адресного пространства.
  3. Контроль системного кэша и драйверов: в Windows Server 2008 R2 системный кэш метафайлов файловой системы может чрезмерно разрастаться (параметр metafile в утилите RAMMap). Также проверим и обновим устаревшие драйверы аппаратных ключей защиты, которые могут препятствовать корректной выгрузке завершенных процессов.

3. Устранение ошибки «Сеанс отсутствует или временно удален» и сетевых сбоев

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

  1. Настройка параметров TCP Keep-Alive в реестре Windows: по умолчанию ОС проверяет активность неактивного TCP-соединения только через 2 часа. Если промежуточный сетевой шлюз или роутер сбрасывает неактивные таблицы трансляции соединений быстрее (например, через 15–30 минут), клиент теряет связь с rphost. Перейдем в ветку реестра HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters и зададим параметры KeepAliveTime (например, 300000 мс — 5 минут) и KeepAliveInterval (1000 мс).
  2. Отключение аппаратных разгрузок сетевого интерфейса: технологии разгрузки сетевого стека (TCP Chimney Offload, Large Send Offload (LSO), Receive Side Scaling (RSS)) на физических и виртуальных сетевых адаптерах могут вызывать микроразрывы сокетов 1С. Рекомендуется отключить эти функции в свойствах сетевой карты и через командную строку с помощью утилиты netsh int ip set global.
  3. Проверка энергосбережения сетевых карт: на клиентских ПК и сервере отключим флаг «Разрешить отключение этого устройства для экономии энергии» в свойствах электропитания сетевых адаптеров.

4. Оптимизация работы с блокировками в конфигурации и СУБД

Конфигурации на обычных формах (включая Комплексную автоматизацию 1.1) исторически используют автоматический режим блокировок данных, что на больших объемах данных приводит к взаимным блокировкам транзакций. Проанализируем методы решения проблемы:

  1. Использование механизма «Разделение итогов»: для высоконагруженных регистров накопления включим режим разделения итогов. Это позволяет нескольким параллельным документам записывать движения без ожидания снятия монопольной блокировки с текущих остатков.
  2. Поэтапный перевод критичных участков на управляемые блокировки: переведем проведение проблемных документов и чтение остатков в управляемый режим блокировок транзакций, чтобы минимизировать диапазон блокируемых строк в таблицах СУБД.
  3. Настройка автоувеличения файлов базы данных и журнала транзакций: в свойствах базы данных MS SQL установим фиксированный шаг автоувеличения (Autogrowth) в мегабайтах (например, по 256–512 МБ), исключив процентный прирост или малые значения по умолчанию (1 МБ), которые вызывают постоянные микрозаморозки базы при расширении файлов.
  4. Включение мгновенной инициализации файлов (Instant File Initialization): предоставим учетной записи службы SQL Server локальное право Perform Volume Maintenance Tasks (Выполнение задач по обслуживанию томов) в групповых политиках безопасности Windows. Это исключит операцию зануления дискового пространства при расширении файлов данных.
  5. Регулярная очистка временных данных: проконтролируем размер каталогов сеансовых данных кластера 1С (папки вида snccntx), которые со временем могут разрастаться и снижать производительность файлового ввода-вывода.
← На главную