Рассмотрим ситуацию, с которой часто сталкиваются системные администраторы при масштабировании инфраструктуры 1С:Предприятие 8.3. На начальном этапе, когда в кластере зарегистрировано 5–10 информационных баз, система работает быстро, и вход в каждую базу занимает 10–15 секунд. Однако при увеличении количества баз (например, до 40 и более), даже если они небольшого объема, время авторизации и загрузки интерфейса может вырасти до 3–4 минут. При этом ресурсы сервера (ЦП и ОЗУ) зачастую не загружены на 100%, что вводит в заблуждение.
В этой статье мы подробно разберем, какие механизмы платформы 1С и настройки операционной системы могут вызывать подобные задержки, и как оптимизировать работу сервера для быстрого открытия любого количества информационных баз.
Проанализируем одну из самых распространенных причин замедления работы платформы в версиях 8.3.15 и 8.3.16. В этих релизах по умолчанию стал использоваться новый формат журнала регистрации — SQLite (файлы с расширением .lgd). Разберем по шагам, почему это становится проблемой при большом количестве баз.
Формат .lgd — это полноценная база данных. При каждом входе пользователя система должна выполнить запись в этот файл. Если баз много, и в каждой из них настроен такой формат журнала, нагрузка на дисковую подсистему при операциях блокировок файлов SQLite возрастает экспоненциально. Особенно критично это проявляется в моменты массового входа пользователей.
Решением является возврат к старому текстовому формату журнала регистрации (.lgf). Для этого в свойствах информационной базы в консоли администрирования или через конфигуратор необходимо изменить формат журнала. Как показывает практика, после переключения на .lgf время открытия баз сокращается до нормативных значений. Однако стоит помнить, что старый формат менее удобен для анализа больших объемов данных, но он значительно снижает нагрузку на файловую систему при инициализации сеанса.
Выясним причину, по которой задержка при входе часто составляет ровно 20, 40 или 60 секунд. Если вы наблюдаете «замирание» процесса загрузки на фиксированные отрезки времени, велика вероятность проблем с сетевыми таймаутами. Платформа 1С:Предприятие при попытке соединения с сервером SQL или рабочим процессом кластера сначала пытается использовать протокол IPv6.
Если в вашей сети IPv6 не настроен должным образом или DNS-сервер не может быстро ответить на запрос, система ждет истечения таймаута, прежде чем переключиться на IPv4. Когда баз много, количество таких запросов увеличивается, и таймауты суммируются.
Рекомендуемые действия по настройке сети:
IPv6 в свойствах сетевых адаптеров на сервере приложений 1С и на сервере баз данных MSSQL.hosts (находящемся по пути C:\Windows\System32\drivers\etc\hosts) на обоих серверах жестко пропишите соответствие IP-адресов и имен серверов. Это исключит лишние запросы к DNS-серверу при каждом обращении 1С к SQL.Посмотрим на процесс поиска лицензии при запуске базы. Если настройки защиты оставлены «по умолчанию», клиентское приложение начинает опрашивать всю локальную сеть широковещательными запросами в поиске менеджера лицензий HASP. В условиях, когда на сервере запущено множество баз, этот процесс может вызывать коллизии и существенные задержки.
Для ускорения процесса необходимо явно указать адрес сервера лицензий в файле nnhasp.ini. Разберем пример настройки этого файла:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; Укажите здесь IP вашего сервера лицензий
NH_TCPIP_METHOD = TCP
NH_USE_BROADCAST = Disabled
Параметр NH_USE_BROADCAST = Disabled отключает широковещательный поиск, что мгновенно направляет запрос по конкретному адресу и экономит время при старте системы.
Проанализируем ситуацию со стороны сервера баз данных. Для небольших баз (до 5–10 Гб) системные администраторы часто оставляют включенными опции автоматического обслуживания, которые губительны для производительности 1С.
Особую опасность представляет параметр Auto Close. Если он установлен в значение True, MSSQL закрывает базу данных и освобождает все ресурсы, как только последний пользователь выходит из нее. При попытке следующего входа SQL-серверу требуется время, чтобы заново инициализировать базу, считать метаданные и выделить память. Если у вас 40 баз и пользователи постоянно входят и выходят, сервер тратит колоссальное время на постоянное «открытие-закрытие» файлов данных.
Проверьте свойства каждой базы в SQL Server Management Studio. Параметры Auto Close и Auto Shrink должны быть установлены в False.
Рассмотрим конфигурацию кластера 1С. По умолчанию все базы могут обслуживаться одним рабочим процессом rphost. При увеличении количества баз до 40 и более один процесс начинает испытывать дефицит потоков и ресурсов на обслуживание очередей запросов.
Мы рекомендуем настроить параметры рабочего сервера следующим образом:
rphost при добавлении новых баз.Распределение баз по разным рабочим процессам позволяет использовать преимущества многоядерных процессоров более эффективно и снижает вероятность того, что «тяжелый» запрос в одной базе заблокирует открытие всех остальных баз на сервере.
В завершение разберем системные настройки, которые часто игнорируются. Если серверы 1С и SQL развернуты в среде виртуализации (Hyper-V, VMware), критически важно обеспечить им стабильные ресурсы.
План электропитания: Как в гостевой операционной системе Windows Server, так и на самом физическом хосте (в BIOS и настройках гипервизора) должен быть установлен план «Высокая производительность» (High Performance). В режиме сбалансированного питания процессор снижает частоту в моменты простоя, и при поступлении запроса на открытие базы требуется время (миллисекунды, которые складываются в секунды) на «разогрев» ядра процессора.
Динамическая память: Никогда не используйте динамическое выделение памяти для виртуальных машин с 1С и SQL. Используйте только Static Memory (статическое выделение). SQL Server при запуске или обращении к базе пытается зарезервировать кэш, и если гипервизор в этот момент замедлит выдачу памяти, это приведет к зависанию сессии 1С на несколько минут.
Таким образом, решив проблему с форматом журнала регистрации и настроив сетевое взаимодействие вместе с параметрами SQL-сервера, вы сможете добиться стабильно быстрого открытия всех информационных баз вне зависимости от их количества в кластере.