При администрировании серверов «1С:Предприятие», работающих совместно с веб-сервером IIS (Internet Information Services), специалисты часто сталкиваются со следующей проблемой: после обновления платформы или планового обслуживания веб-клиенты перестают запускаться. Пользователи видят бесконечно висящую желтую заставку 1С, а в журнале событий Windows (Event Viewer) появляется предупреждение от IIS следующего содержания: «Рабочий процесс обслуживающий пул приложений не смог остановить канал прослушивателя для протокола http в отведенный интервал времени» (Event ID 5013 или 5138).
В этой статье мы подробно разберем, почему возникает данная ошибка, как она связана с рабочими процессами IIS и службой Агента сервера 1С, а также пошагово рассмотрим методы её устранения и тонкой настройки веб-сервера для стабильной работы.
Для того чтобы эффективно решить проблему, проанализируем внутренние механизмы взаимодействия IIS и «1С:Предприятия». Когда пользователь обращается к опубликованной информационной базе через браузер или тонкий клиент по протоколу HTTP/HTTPS, IIS создает рабочий процесс w3wp.exe для соответствующего пула приложений. Этот процесс загружает специальный модуль расширения веб-сервера 1С — динамическую библиотеку wsisapi.dll.
Этот модуль транслирует HTTP-запросы от клиентов и перенаправляет их к серверу приложений 1С (к процессам rmngr.exe и rphost.exe). Если на стороне сервера 1С происходит сбой, зависание сеанса, блокировка лицензии или конфликт версий, библиотека wsisapi.dll «зависает» в ожидании ответа. В этот момент IIS, пытаясь выполнить плановый рециклинг (перезапуск) пула приложений или остановить его по таймауту, посылает рабочему процессу сигнал на завершение работы. Поскольку поток внутри w3wp.exe заблокирован ожиданием ответа от сервера 1С, процесс не может корректно закрыть сетевой сокет за отведенные 90 секунд (настройка по умолчанию). В результате IIS принудительно убивает процесс и фиксирует ошибку канала прослушивателя.
Рассмотрим пошагово комплекс мер, которые помогут полностью устранить эту проблему и предотвратить её появление в будущем.
Как показывает практика, простая перезагрузка веб-сервера IIS часто не дает результата, поскольку зависшие транзакции или поврежденный кэш сеансов на стороне службы «Агент сервера 1С:Предприятия» продолжают блокировать новые подключения. Для исправления ситуации выполним полную очистку временных данных. Для этой задачи можно использовать инструмент для анализа и очистки каталога srvinfo.
Разберем процесс очистки по шагам:
services.msc) на сервере приложений 1С.1C:Enterprise 8.3 Server Agent) и остановим её.C:\Program Files\1cv8\srvinfo\reg_1541\ (вместо reg_1541 может быть имя вашего порта кластера).snccntx (например, snccntx306233ba-7612-4f76-80db-002621903328). Полностью удалим эти папки. В них хранится кэш сеансов, который мог повредиться при некорректном завершении процессов.Для автоматизации этой процедуры администраторы могут использовать скрипт PowerShell. Рассмотрим пример безопасного перезапуска служб с очисткой временных директорий:
# Остановка служб IIS и 1С
Stop-Service -Name "W3SVC" -Force
Stop-Service -Name "1C:Enterprise 8.3 Server Agent" -Force
# Ожидание завершения процессов
Start-Sleep -Seconds 5
# Очистка сеансового кэша в каталоге кластера 1С
$ClusterPath = "C:\Program Files\1cv8\srvinfo\reg_1541"
if (Test-Path $ClusterPath) {
Get-ChildItem -Path $ClusterPath -Directory -Filter "snccntx*" | Remove-Item -Recurse -Force
}
# Запуск служб в обратном порядке
Start-Service -Name "1C:Enterprise 8.3 Server Agent"
Start-Service -Name "W3SVC"
Зависание на заставке (когда логотип 1С висит бесконечно и не появляется окно авторизации) в 90% случаев связано с поиском программных или аппаратных лицензий HASP. Если веб-сервер не может оперативно получить свободную лицензию, рабочий процесс IIS уходит в глубокое ожидание.
Выполним правильную настройку раздачи лицензий:
.lic) установлены в каталог, доступный серверной службе 1С, например: C:\ProgramData\1C\licenses\.nethasp.ini на сервере 1С, явно указав IP-адрес менеджера лицензий NH_SERVER_ADDR. Это исключит длительный и нестабильный широковещательный поиск ключа по сети.По умолчанию при публикации баз через конфигуратор или утилиту webinst все публикации привязываются к стандартному пулу приложений DefaultAppPool. Если на сервере опубликовано несколько баз, то зависание веб-клиента в одной базе приведет к падению всего пула, парализуя работу остальных пользователей. Настоятельно рекомендуется разделять базы по индивидуальным пулам приложений.
Выполним изоляцию баз по шагам:
Pool_Buhg_Production). В поле «Версия среды .NET CLR» выберем «Без управляемого кода» (поскольку расширение 1С написано на C++ и не требует среды .NET), режим управляемого конвейера оставим «Встроенный» (Integrated). Нажмем «ОК».Теперь зависание или утечка памяти в одной базе затронет только её собственный рабочий процесс w3wp.exe, а остальные публикации продолжат работу в штатном режиме.
По умолчанию новые пулы приложений в IIS запускаются под виртуальной системной учетной записью ApplicationPoolIdentity. Из-за этого у процесса w3wp.exe может не хватать прав для доступа к временным каталогам системы, файлам платформы 1С или каталогу файловой базы (если публикация файловая).
Для исправления прав выполним следующие действия:
usr1cv8), который имеет полные права на папки с базой данных и программными файлами 1С.IIS_IUSRS права на «Чтение», «Запись» и «Модификацию» для каталога публикации базы (по умолчанию это C:\inetpub\wwwroot\ИмяВашейБазы\).При использовании 64-разрядной версии платформы «1С:Предприятие» критически важно настроить пул приложений IIS на работу исключительно в 64-битном режиме. Смешивание разрядностей неизбежно приводит к сбоям загрузки DLL-библиотеки 1С.
Убедимся в правильности настроек разрядности:
1C Web-service Extension или *.1cws / *.1css)."C:\Program Files\1cv8\8.3.X.XXXX\bin\wsisapi.dll". Если путь ведет в папку Program Files (x86), исправим его на x64 версию.Для минимизации аварийных завершений процессов IIS при выполнении тяжелых отчетов пользователями, скорректируем стандартные таймауты IIS:
Применяя данные комплексные меры, мы добьемся высокой отказоустойчивости веб-сервера IIS при работе с платформой «1С:Предприятие 8.3», полностью избавившись от зависания сессий на заставке запуска и системных ошибок остановки каналов прослушивания HTTP. Для автоматического аудита параметров конфигурации и выявления узких мест подойдёт обработка для чек-апа веб-публикации на IIS.