Почему 1С долго запускается в первый раз через веб-сервер IIS и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Проблема долгого «первого» запуска 1С — ситуация, с которой часто сталкиваются администраторы при публикации файловых баз на веб-сервере IIS. Особенно остро это проявляется, когда объем базы данных превышает 5–6 Гб. Ситуация, когда первый пользователь ждет загрузки системы 20–30 минут, а все последующие заходят мгновенно, указывает на комплекс факторов: от особенностей работы самого веб-сервера до механизмов выполнения регламентных заданий в файловом режиме. Рассмотрим подробно, почему так происходит и как оптимизировать этот процесс.

Анализируем поведение IIS: «Прогрев» и таймаут простоя

Одной из главных причин, почему запуск через браузер «лечит» проблему для тонкого клиента, является инициализация рабочего процесса IIS (w3wp.exe). Разберем по шагам, что происходит на сервере. По умолчанию в настройках пула приложений IIS установлен параметр Idle Time-out (Таймаут простоя), равный 20 минутам. Если ночью или в течение длительного времени к базе никто не обращался, IIS завершает рабочий процесс для экономии ресурсов. При первом утреннем запросе серверу приходится:

  1. Заново создать рабочий процесс w3wp.exe.
  2. Загрузить все необходимые библиотеки расширения 1С для взаимодействия с веб-сервером.
  3. Открыть тяжелый файл базы данных 1Cv8.1CD (в нашем случае 6 Гб).
  4. Считать метаданные конфигурации в оперативную память (иногда требуется предварительная очистка кэша).

Чтобы избежать этой задержки, проанализируем настройки пула приложений в диспетчере служб IIS. Нам необходимо изменить параметры так, чтобы процесс всегда оставался активным. Для этого выполним следующие действия:

  1. Откроем «Диспетчер служб IIS».
  2. Перейдем в раздел «Пулы приложений» и выберем тот пул, на котором опубликована база 1С.
  3. Зайдем в «Дополнительные параметры».
  4. Установим значение Старт-режим (Start Mode) в положение AlwaysRunning.
  5. Установим Таймаут простоя (Idle Time-out) в значение 0 (это означает бесконечное ожидание).

Дополнительно рекомендуется установить модуль IIS «Application Initialization» (Инициализация приложения). Это позволит серверу имитировать обращение к базе сразу после перезагрузки IIS или самого сервера, фактически выполняя «прогрев» системы до прихода сотрудников. Для более глубокого понимания особенностей взаимодействия платформ также полезно изучить руководство по тонкой настройке веб-сервисов на стороне 1С под IIS.

Влияние регламентных заданий в файловом режиме

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

Как только заходит первый пользователь, его сеанс берет на себя роль «планировщика». Система начинает судорожно выполнять все пропущенные задания. Если база весит 6 Гб, то одна только процедура ОбновлениеИндексаПолнотекстовогоПоиска может заблокировать работу на значительное время, так как она активно читает и записывает данные в файл базы. Выясним причину задержки, используя параметры запуска. Рассмотрим пример запуска базы с отключением регламентных заданий для диагностики:


// В строке запуска или настройках подключения добавим ключ:
/AllowExecuteScheduledJobs -off

Если с этим ключом база запускается быстро, значит, проблема именно в регламентных заданиях. Рассмотрим вариант решения: создание специального «технического» пользователя, чей сеанс будет автоматически запускаться на сервере по расписанию (например, в 7 утра) и выполнять все регламентные процедуры до прихода бухгалтеров. Также полезно проверить программный код в модуле управляемого приложения:


Процедура ПриНачалеРаботыСистемы()
    // Проанализируем, нет ли здесь тяжелых вычислений, 
    // которые выполняются только при первом запуске за день
    Если ЭтоПервыйЗапускСегодня() Тогда
        // Тяжелая логика
    КонецЕсли;
КонецПроцедуры

Для временного отключения всей логики начала работы (чтобы проверить, не в коде ли дело) можно использовать ключ запуска /C ОтключитьЛогикуНачалаРаботыСистемы, если такая обработка предусмотрена в вашей конфигурации.

Дисковая подсистема и кэширование Windows

Обратим внимание на сообщение о том, что ночью на сервере выполняется резервное копирование. Это крайне важный момент. При копировании файла объемом 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 будет сильно ограничен или замедлен.

Разберем, что нужно добавить в исключения антивируса на сервере:

Проблемы сетевых настроек: IPv6 и Proxy

Иногда разница в скорости запуска через браузер и тонкий клиент обусловлена тем, как они определяют сетевые параметры. Тонкий клиент 1С часто пытается автоматически определить настройки прокси-сервера через системную службу (WPAD). Если в сети нет корректно настроенного прокси-сервера, этот процесс может «висеть» несколько минут по таймауту.

Посмотрим, как это исправить в настройках подключения к базе в списке 1С:

  1. Нажмем «Изменить» на нужной базе в списке.
  2. Перейдем на страницу настроек прокси-сервера.
  3. Вместо «Использовать системные настройки» принудительно выберем «Не использовать прокси».

Также проанализируем протокол IPv6. Если он включен в свойствах сетевого адаптера, но инфраструктура сети его не поддерживает, тонкий клиент может сначала пытаться установить соединение по IPv6, ждать ошибки и только потом переходить на IPv4. Рекомендуется отключить IPv6 в свойствах сетевого подключения как на сервере, так и на клиентских машинах.

Подведем итог: для решения проблемы долгого запуска необходимо действовать комплексно. Настроим пул приложений IIS на постоянную работу, выполним очистку кеша, обеспечим предварительное кэширование файла базы в память сервера после ночного бэкапа, добавим все необходимые исключения в антивирус и проверим регламентные задания. Сочетание этих мер позволит сократить время входа с 30 минут до нескольких секунд. Для упрощения самой процедуры размещения баз на веб-сервере можно использовать утилиту автоматической публикации информационных баз.

← На главную