При масштабном обновлении инфраструктуры, например, при переходе с Windows Server 2008 и старых версий SQL на современную связку Windows Server 2019 и SQL Server 2019, администраторы часто сталкиваются с критической проблемой. Информационные базы 1С начинают непредсказуемо зависать, при этом в консоли администрирования наблюдается резкий скачок количества фоновых заданий (с нескольких десятков до сотен), а пользователи не могут войти в систему. Мы разберем причины этой ситуации и пошагово рассмотрим методы ее решения.
Ситуация, когда база «не пускает» пользователя даже до окна ввода логина и пароля, обычно указывает на блокировку на уровне системных ресурсов. Рассмотрим основные факторы, которые провоцируют это состояние:
.lgd) малейшие задержки дисковой подсистемы или сетевые сбои могут приводить к монопольному захвату журнала одним процессом, что блокирует вход всех остальных пользователей.rphost.Если мы переносим базы методом отсоединения и присоединения (Attach/Detach), они сохраняют настройки старого сервера, но начинают работать на новом движке. Проанализируем настройки базы данных в SQL Server Management Studio (SSMS). Для корректной работы 1С нам необходимо изменить параметры совместимости.
Выполним следующие SQL-запросы для каждой проблемной базы:
-- Установка уровня совместимости с SQL Server 2016/2017 (иногда помогает стабилизировать планы)
ALTER DATABASE [Имя_Вашей_Базы] SET COMPATIBILITY_LEVEL = 140;
GO
-- Включение старого механизма оценки мощности (Legacy Cardinality Estimation)
-- Это критично для корректной работы запросов 1С на SQL 2019
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;
GO
-- Отключение автоматического инлайнинга скалярных функций (может вызывать зависания)
ALTER DATABASE SCOPED CONFIGURATION SET TSQL_SCALAR_UDF_INLINING = OFF;
GO
Также проверим параметр MAXDOP (Max Degree of Parallelism). В настройках инстанса SQL Server убедимся, что он не равен 0. Для серверов 1С рекомендуется устанавливать значение 1, 2 или 4, чтобы одно тяжелое фоновое задание не захватывало все ядра процессора, вызывая общие ожидания типа CXPACKET.
Разберем ситуацию со стороны сервера приложений 1С. Когда фоновые задания начинают бесконтрольно плодиться, нам нужно ограничить их «время жизни» и настроить автоматическую очистку зависших процессов.
Посмотрим на параметры рабочего сервера в консоли администрирования 1С:
rphost обслуживать слишком много соединений. Значение 25-50 поможет изолировать проблемы одной базы от других.rphost без выкидывания пользователей. Это можно автоматизировать скриптом, который меняет параметры кластера через COM-соединение или AdminShell.Выясним, какие именно регламентные задания вызывают рост очереди. В большинстве случаев виновниками являются задания «Обновление индекса полнотекстового поиска» и «Слияние индекса полнотекстового поиска». Если полнотекстовый поиск не является критически важным для пользователей в режиме реального времени, его следует отключить.
Рассмотрим, как это сделать программно в коде 1С или через консоль заданий:
// Отключение полнотекстового поиска для всей базы
ПолнотекстовыйПоиск.УстановитьИспользование(Ложь);
Также крайне важно отключить отладку по HTTP на рабочем сервере. В настройках службы агента сервера 1С уберите ключ -http из строки запуска, если он там присутствует. В высоконагруженных системах отладка может приводить к блокировкам сетевых сокетов, что визуально выглядит как «зависание» базы при попытке входа.
Проанализируем состояние журналов регистрации. Если вы используете новый формат .lgd, попробуйте перенести папку srvinfo (где хранятся логи) на максимально быстрый диск (SSD/NVMe). Если база продолжает зависать при входе, выполните следующие действия:
1Cv8.lgd в папке конкретной базы в каталоге reg_1541. При следующем запуске 1С создаст чистый файл журнала, и зависания могут прекратиться.Не забудем про настройки самой ОС. Windows Server 2019 имеет ряд особенностей, влияющих на работу сетевого стека 1С:
ragent.exe, rmngr.exe, rphost.exe, а также папки с данными сервера 1С и каталоги баз SQL.Подводя итог, можно сказать, что проблема чаще всего носит комплексный характер. Сочетание настройки LEGACY_CARDINALITY_ESTIMATION на SQL сервере и оптимизация количества рабочих процессов в кластере 1С позволяют устранить зависания в 90% случаев. Если проблема сохраняется, рекомендуем обновить платформу 1С до последних патчей внутри ветки (например, перейти на стабильную 8.3.22+), так как в 8.3.18 многие механизмы управления фоновыми заданиями работают нестабильно.