Проблема долгого «первого» запуска 1С — ситуация, с которой часто сталкиваются администраторы при публикации файловых баз на веб-сервере IIS. Особенно остро это проявляется, когда объем базы данных превышает 5–6 Гб. Ситуация, когда первый пользователь ждет загрузки системы 20–30 минут, а все последующие заходят мгновенно, указывает на комплекс факторов: от особенностей работы самого веб-сервера до механизмов выполнения регламентных заданий в файловом режиме. Рассмотрим подробно, почему так происходит и как оптимизировать этот процесс.
Одной из главных причин, почему запуск через браузер «лечит» проблему для тонкого клиента, является инициализация рабочего процесса IIS (w3wp.exe). Разберем по шагам, что происходит на сервере. По умолчанию в настройках пула приложений IIS установлен параметр Idle Time-out (Таймаут простоя), равный 20 минутам. Если ночью или в течение длительного времени к базе никто не обращался, IIS завершает рабочий процесс для экономии ресурсов. При первом утреннем запросе серверу приходится:
w3wp.exe.1Cv8.1CD (в нашем случае 6 Гб).Чтобы избежать этой задержки, проанализируем настройки пула приложений в диспетчере служб IIS. Нам необходимо изменить параметры так, чтобы процесс всегда оставался активным. Для этого выполним следующие действия:
AlwaysRunning.0 (это означает бесконечное ожидание).Дополнительно рекомендуется установить модуль IIS «Application Initialization» (Инициализация приложения). Это позволит серверу имитировать обращение к базе сразу после перезагрузки IIS или самого сервера, фактически выполняя «прогрев» системы до прихода сотрудников. Для более глубокого понимания особенностей взаимодействия платформ также полезно изучить руководство по тонкой настройке веб-сервисов на стороне 1С под IIS.
В файловом варианте работы 1С существует критическая особенность: регламентные задания не выполняются в фоновом режиме сами по себе, если нет ни одного активного сеанса. Проанализируем ситуацию: за ночь в базе накапливается очередь заданий (обновление полнотекстового поиска, извлечение текста, очистка кэша, загрузка курсов валют и т.д.).
Как только заходит первый пользователь, его сеанс берет на себя роль «планировщика». Система начинает судорожно выполнять все пропущенные задания. Если база весит 6 Гб, то одна только процедура ОбновлениеИндексаПолнотекстовогоПоиска может заблокировать работу на значительное время, так как она активно читает и записывает данные в файл базы. Выясним причину задержки, используя параметры запуска. Рассмотрим пример запуска базы с отключением регламентных заданий для диагностики:
// В строке запуска или настройках подключения добавим ключ:
/AllowExecuteScheduledJobs -off
Если с этим ключом база запускается быстро, значит, проблема именно в регламентных заданиях. Рассмотрим вариант решения: создание специального «технического» пользователя, чей сеанс будет автоматически запускаться на сервере по расписанию (например, в 7 утра) и выполнять все регламентные процедуры до прихода бухгалтеров. Также полезно проверить программный код в модуле управляемого приложения:
Процедура ПриНачалеРаботыСистемы()
// Проанализируем, нет ли здесь тяжелых вычислений,
// которые выполняются только при первом запуске за день
Если ЭтоПервыйЗапускСегодня() Тогда
// Тяжелая логика
КонецЕсли;
КонецПроцедуры
Для временного отключения всей логики начала работы (чтобы проверить, не в коде ли дело) можно использовать ключ запуска /C ОтключитьЛогикуНачалаРаботыСистемы, если такая обработка предусмотрена в вашей конфигурации.
Обратим внимание на сообщение о том, что ночью на сервере выполняется резервное копирование. Это крайне важный момент. При копировании файла объемом 6 Гб операционная система считывает его целиком, вытесняя из своего файлового кэша (System File Cache) данные 1С данными бэкапа. Утром, когда заходит первый пользователь, сервер вынужден физически считывать 6 Гб с HDD или SSD, а не из оперативной памяти.
Проанализируем ситуацию: чтение 6 Гб со скоростью обычного жесткого диска (HDD) может занимать длительное время, особенно если диск фрагментирован или нагружен другими процессами. Рассмотрим эффективный способ борьбы с этим — «принудительный прогрев» дискового кэша. Можно создать простой скрипт (bat-файл), который будет запускаться за полчаса до начала рабочего дня и просто копировать файл базы «в никуда»:
copy /b C:\Base1C\1Cv8.1CD nul
Эта команда заставит операционную систему прочитать файл базы и поместить его в оперативную память (кэш). После этого первый запуск 1С пройдет значительно быстрее, так как обращения к диску будут минимальны.
Файловая база 1Cv8.1CD воспринимается антивирусом (в том числе встроенным Windows Defender) как один огромный архив. При первом обращении к нему после простоя антивирусная программа может инициировать полную проверку файла. Пока 6 Гб не будут просканированы, доступ к файлу для процесса w3wp.exe будет сильно ограничен или замедлен.
Разберем, что нужно добавить в исключения антивируса на сервере:
*.1CD, *.1CL, *.1CIB, *.1P, *.pf.w3wp.exe.1cv8.exe, 1cv8c.exe).Иногда разница в скорости запуска через браузер и тонкий клиент обусловлена тем, как они определяют сетевые параметры. Тонкий клиент 1С часто пытается автоматически определить настройки прокси-сервера через системную службу (WPAD). Если в сети нет корректно настроенного прокси-сервера, этот процесс может «висеть» несколько минут по таймауту.
Посмотрим, как это исправить в настройках подключения к базе в списке 1С:
Также проанализируем протокол IPv6. Если он включен в свойствах сетевого адаптера, но инфраструктура сети его не поддерживает, тонкий клиент может сначала пытаться установить соединение по IPv6, ждать ошибки и только потом переходить на IPv4. Рекомендуется отключить IPv6 в свойствах сетевого подключения как на сервере, так и на клиентских машинах.
Подведем итог: для решения проблемы долгого запуска необходимо действовать комплексно. Настроим пул приложений IIS на постоянную работу, выполним очистку кеша, обеспечим предварительное кэширование файла базы в память сервера после ночного бэкапа, добавим все необходимые исключения в антивирус и проверим регламентные задания. Сочетание этих мер позволит сократить время входа с 30 минут до нескольких секунд. Для упрощения самой процедуры размещения баз на веб-сервере можно использовать утилиту автоматической публикации информационных баз.