Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

HTTP 503 Windows Server, AD и Роли

IIS HTTP 503 Service Unavailable: Queue Full — устранение переполнения

Обновлено: 28.08.2026 · Официальная документация ↗

Симптомы переполнения очереди IIS (HTTP 503)

Веб-сервер IIS перестает отвечать на входящие клиентские запросы и возвращает в браузер ошибку HTTP Error 503. The service is unavailable. В журнале HTTPERR (C:\Windows\System32\LogFiles\HTTPERR\httperr*.log) регистрируются записи с причиной QueueFull или AppOffline.

СимптомГде фиксируетсяПричина
HTTP 503 QueueFullЖурнал HTTPERRОчередь запросов пула приложений в драйвере HTTP.sys заполнена на 100%
Пул приложений работает, но сайт не отвечаетIIS ManagerРабочий процесс w3wp.exe не успевает обрабатывать входящие соединения
Высокая очередь запросовСистемный монитор (perfmon)Зависание запросов к медленной внешней базе данных или API

Пошаговое устранение переполнения очереди в IIS

  1. Увеличьте лимит длины очереди пула приложений (Queue Length): по умолчанию размер очереди составляет 1000 запросов. Для высоконагруженных сайтов увеличьте его до 5000–10000:
    Import-Module WebAdministration; Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "queueLength" -Value 5000
  2. Увеличьте лимит соединений на уровне драйвера ядра HTTP.sys:
    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\HTTP\Parameters" -Name "EnableAggressiveMemoryUsage" -Value 1 -Type DWord -Force; Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\HTTP\Parameters" -Name "MaxConnections" -Value 100000 -Type DWord -Force
  3. Определите зависшие запросы в реальном времени:
    & "$env:SystemRoot\System32\inetsrv\appcmd.exe" list requests /elapsed:5000
  4. Увеличьте количество рабочих процессов (Web Garden), если приложение не привязано к сессиям в памяти: увеличьте параметр Maximum Worker Processes с 1 до 2–4.

Важно: Простое увеличение очереди маскирует проблему, если веб-приложение зависает из-за дедлоков в SQL. Обязательно устраните задержки в бэкенд-коде.

💡 Практика специалистов: При появлении QueueFull немедленно выполните команду appcmd list requests. Если вы видите сотни запросов со статусом ExecuteRequestHandler и временем более 30 000 мс, сервер базы данных SQL находится в состоянии блокировки (Lock Escalation).

Частые вопросы (FAQ)

В чем разница между журналами IIS W3C и журналом HTTPERR?

Журналы IIS пишутся процессом w3wp.exe при обработке сайтом. Журнал HTTPERR пишется драйвером ядра HTTP.sys, когда запрос отброшен до попадания в пул приложений.

Почему увеличение Queue Length может привести к нехватке памяти?

Каждый удерживаемый в очереди запрос занимает буфер в невыгружаемом пуле оперативной памяти ядра (Non-Paged Pool).

Как быстро очистить зависшую очередь запросов пула?

Выполните команду Restart-WebAppPool -Name 'ИмяПула' в PowerShell.

Что означает причина Connections_Refused в HTTPERR?

Это означает, что достигнут лимит максимального количества одновременных TCP-соединений, разрешенных на сайте.

Полезные материалы
Рекомендуем