Работа в 1С через веб-сервер IIS в файловом режиме — это популярное решение для небольших компаний, которое позволяет избежать затрат на серверную лицензию 1С и MS SQL Server. Однако часто системные администраторы сталкиваются с критической проблемой: как только один пользователь запускает «тяжелый» отчет или ресурсоемкую обработку, работа всех остальных веб-пользователей полностью парализуется. В это время новые подключения невозможны, а у активных сессий «вращается колесико» до тех пор, пока отчет не будет сформирован. При этом пользователи, подключенные через локальную сеть (по протоколу SMB), продолжают работать без проблем.
В этой статье мы подробно разберем, почему возникает такая ситуация, проанализируем механизмы блокировок и рассмотрим практические способы решения проблемы, включая настройку нескольких независимых публикаций.
Проанализируем архитектуру взаимодействия веб-сервера и 1С. Когда вы публикуете базу на IIS, используется расширение веб-сервера — библиотека wsisapi.dll. В случае с файловой базой (файл 1Cv8.1CD) возникают следующие ограничения:
1Cv8.clck, который отвечает за управление сеансами.Рассмотрим подробнее решения, которые помогут обойти эти ограничения без перехода на полноценный клиент-серверный вариант.
Наиболее действенный, хотя и трудоемкий «костыль» — это разнесение пользователей по разным портам и процессам IIS. Это позволяет создать для каждого (или для групп пользователей) свой собственный рабочий процесс, который будет иметь отдельную очередь запросов. Разберем этот процесс по шагам.
Шаг 1. Подготовка основной публикации
Сначала убедимся, что у нас есть базовая рабочая публикация, созданная через конфигуратор или утилиту webinst. Допустим, она называется buh и находится по пути C:\inetpub\wwwroot\buh. Проверьте, что файл default.vrd настроен корректно.
Шаг 2. Настройка дополнительных сайтов в IIS
Для создания дополнительных точек входа выполним следующие действия:
1C_User1.C:\inetpub\www_user1.Шаг 3. Копирование и преобразование в приложение
buh в новую папку C:\inetpub\www_user1.1C_User1 найдем скопированную папку buh, нажмем на нее правой кнопкой мыши и выберем «Преобразовать в приложение».Теперь пользователь может подключаться по адресу http://имя_сервера:90/buh. Повторите эти шаги для других портов (91, 92 и т.д.). Поскольку каждый сайт в IIS работает в своем пуле приложений, «зависание» процесса на порту 80 не заблокирует работу процесса на порту 90. Не забудьте открыть соответствующие порты в брандмауэре Windows.
Начиная с версии платформы 8.3.14, компания 1С представила новый инструмент — Автономный сервер. Это решение специально создано для эффективной работы с файловыми базами через HTTP без использования тяжеловесных IIS или Apache.
Проанализируем преимущества автономного сервера:
Для запуска автономного сервера используется командная строка. Рассмотрим пример команды для запуска:
ibsrv.exe --db-path="C:\1C_Bases\Accounting" --port=8080 --daemon
Если вам требуется поддержка протокола HTTPS, рекомендуется использовать схему Reverse Proxy. В этом случае IIS или Nginx принимает входящий защищенный трафик и перенаправляет его локально на порт автономного сервера. Это избавляет от необходимости «мучать» IIS прямыми публикациями файловых баз.
Иногда проблему можно смягчить тонкой настройкой конфигурационного файла публикации default.vrd. Разберем ключевые параметры:
pooling: По умолчанию он может быть выключен. Попробуем включить пул соединений, чтобы ускорить повторные подключения, однако для файловой базы это нужно делать осторожно.Рекомендуется программно отключать выполнение ресурсоемких регламентных заданий в рабочее время. Для этого можно использовать следующий фрагмент кода в модуле управляемого приложения или через консоль заданий:
// Пример отключения регламентного задания
Задание = РегламентныеЗадания.НайтиПоНаименованию("ОбновлениеИндексаПолнотекстовогоПоиска");
Если Задание <> Неопределено Тогда
Задание.Использование = Ложь;
Задание.Записать();
КонецЕсли;
Если мы продолжаем использовать IIS, важно правильно настроить «Пул приложений» (Application Pool), в котором работает 1С. Посмотрим на критически важные настройки:
503 Service Unavailable при пиковых нагрузках.Подводя итог, можно сказать, что «зависание» — это врожденная особенность файлового режима. Если бюджет позволяет, переход на клиент-серверный вариант (SQL) решит проблему раз и навсегда за счет гранулярных блокировок (на уровне записи, а не таблицы).
Если же нужно остаться в рамках файловой базы, наиболее надежным современным методом является использование Автономного сервера 1С. Метод с созданием множества сайтов на разных портах в IIS (Solution 1) остается рабочим «спасательным кругом» для тех, кто по каким-то причинам привязан к старым версиям платформы или специфическим настройкам IIS.