При администрировании серверов 1С:Предприятия, работающих совместно с веб-сервером Microsoft Internet Information Services (IIS), системные администраторы часто сталкиваются со следующей проблемой. Сразу после того как хотя бы один пользователь успешно подключается к информационной базе через веб-браузер (веб-клиент), все последующие попытки входа через тонкий клиент зависают на стартовой заставке. При этом программа не выдает никаких видимых ошибок, а восстановить работоспособность помогает исключительно перезапуск веб-сервера IIS.
В этой статье мы подробно разберем природу этого системного сбоя, проанализируем неочевидные причины блокировок процессов и предложим пошаговую инструкцию по полной настройке серверного окружения для устранения этой проблемы раз и навсегда.
Для начала проанализируем внутреннюю архитектуру взаимодействия. Когда пользователь подключается через тонкий клиент по протоколу HTTP/HTTPS или через обычный браузер, веб-сервер IIS обрабатывает входящие запросы через специальное расширение (ISAPI-модуль wsapising.dll или wsapi.dll). Вся эта активность выполняется в рамках так называемого пула приложений (Application Pool) под управлением рабочего процесса IIS w3wp.exe.
Если веб-клиент и тонкие клиенты используют один и тот же пул приложений, любая монопольная блокировка процесса w3wp.exe приводит к выстраиванию бесконечной очереди запросов. Новые пользователи тонкого клиента попросту не могут пройти этап авторизации и бесконечно видят заставку запуска 1С.
Ниже мы подробно разберем пять основных технических причин этой проблемы и пошагово настроим сервер.
По умолчанию при публикации баз из конфигуратора 1С все виртуальные приложения привязываются к единому стандартному пулу DefaultAppPool. Если одна из баз зависает (например, из-за длительного запроса в веб-клиенте), блокируется весь пул, что парализует работу всех остальных опубликованных информационных баз.
Разберем по шагам, как изолировать базы данных:
Pool_Buh или Pool_ZUP).Повторите эту операцию для каждой опубликованной базы. Теперь зависание или переполнение очереди в одной базе никак не повлияет на работоспособность остальных баз.
Стандартный пул приложений IIS имеет строгое ограничение на количество одновременно задействованных рабочих процессов. По умолчанию параметр Максимальное число рабочих процессов (Maximum Worker Processes) равен 1. Это означает, что все запросы обрабатывает ровно один экземпляр w3wp.exe. Когда заходит веб-клиент, он может заблокировать этот единственный поток.
Проведем оптимизацию параметров пула:
w3wp.exe.Распространенная системная ошибка Windows Server, из-за которой веб-расширения 1С «намертво» зависают при попытке инициализации сессии. Поскольку служба IIS запускает рабочие процессы от имени системной учетной записи (например, System или NetworkService), платформа 1С пытается обратиться к временным папкам профиля этой учетной записи, в том числе ищет рабочий стол (Desktop). Если папки физически нет на диске, процесс зависает без выдачи ошибок в логи.
Давайте исправим это вручную. Нам потребуется создать соответствующие папки в системных директориях Windows.
Выполните следующие команды в PowerShell с правами администратора или создайте папки через стандартный Проводник Windows:
New-Item -Path "C:\Windows\System32\config\systemprofile\Desktop" -ItemType Directory -Force
New-Item -Path "C:\Windows\SysWOW64\config\systemprofile\Desktop" -ItemType Directory -Force
После физического создания папок необходимо предоставить права доступа:
Desktop.IUSR, группы IIS_IUSRS, а также системного пользователя 1С (обычно это USR1CV8).При использовании программных лицензий 1С инициализация сессии веб-клиента требует валидации файла лицензии. Сам веб-сервер IIS при обращении к файлам лицензии посылает запросы к службе WMI (Windows Management Instrumentation) для сверки аппаратных характеристик сервера. Если у учетной записи пула приложений IIS нет прав на чтение папки с лицензиями или к системным компонентам, проверка зависает на этапе поиска ключа.
Выполним обязательные настройки безопасности файловой системы:
C:\ProgramData\1C\licenses.IIS_IUSRS и пользователь USR1CV8 имеют полные права (Чтение, Запись, Изменение) на эту папку и все вложенные файлы .lic.Если после выполнения всех точечных настроек проблема с зависанием на IIS сохраняется, это может свидетельствовать о повреждении конфигурационных файлов метабазы IIS или некорректной работе модулей фильтрации после обновлений операционной системы (особенно актуально для Windows Server 2008 / 2008 R2).
В этом случае рекомендуется выполнить процедуру чистой переустановки роли веб-сервера:
C:\inetpub, в которой хранятся конфигурационные файлы и временные данные старых публикаций.Для сильно нагруженных систем или устаревших версий ОС Windows Server альтернативным и чрезвычайно стабильным решением является использование веб-сервера Apache 2.4 (x64) вместо IIS. Apache работает по иной схеме распределения памяти и процессов, абсолютно нечувствителен к системным профилям Windows и механизму блокировок пулов, что делает его развертывание отличным решением при регулярных сетевых сбоях.