- Ошибка 503 Service unavailable — Что это и как исправить?
- Как исправить ошибку 503 service unavailable
- Ошибка HTTP Error 503 The service is unavailable с кодом события WAS 5189
- Как это работает?
- Windows http error 503
- Описание ошибки 503 на IIS
- Причины ошибки HTTP Error 503. The service is unavailable
- Методы устранения ошибки 503 на IIS
- Переустановка системы
- Проверка работы NET.Framework
- Отключение 32 битного режима на пуле IIS
- Проверка учетной записи от которой запускается пул
- Отключение Load User Profile на пуле IIS
- Не создает временный файл конфигурации пула
- Два сайта на 443 порту
Ошибка 503 Service unavailable — Что это и как исправить?
Ошибка 503 Service unavailable (сервис недоступен) — означает, что данный сайт к которому вы подключаетесь, недоступен. Связано это с тем, что сервер на котором находится данный сайт, не может обработать количество одновременных запросов в базе данных. Это также могут быть технические работы на хостинге или просто перезагрузка сервера. В большинстве случаях, пользователь не причастен к этой ошибке, так как эта ошибка на стороне сервера. Нужно всего лишь подождать и перезагрузить страницу, чтобы ошибка 503 исчезла. Тем не менее, существуют ситуации, когда возникает ошибка 503 по вине системы Windows 10.
Как исправить ошибку 503 service unavailable
- Откройте другой сайт и проверьте работает ли он.
- Обновите страницу данного веб-сайта Ctrl+F5.
- Перезагрузите модем и компьютер.
- Если вы используете сторонние программы или расширения для браузера как VPN, прокси, то удалите их.
- Если вы веб-мастер, то попробуйте зайти с другого устройства и браузера. Проверьте свой сервер на доступность (обратитесь в тех.поддержку хостинга). Скорее всего он перестал работать из-за большого количества запросов к базе данных. Возможна Ddos-атака на ваш сайт.
Ошибка HTTP Error 503 The service is unavailable с кодом события WAS 5189
Если используете компьютер под управлением Windows 10 или Windows Server 2016 с включенными службами IIS (Internet Information Services), и вы обновляете систему до более новой версии, то некоторые веб-приложения могут не запуститься и выдавать ошибку 503. Если вы посмотрите журнал событий, можете обнаружить код события WAS 5189, который говорит, что не удалось создать файл конфигурации пула для приложения.
Как это работает?
Ошибка 503 возникает из-за того, что служба активации процессов Windows (WAS) создает временный файл конфигурации для каждого пула приложений IIS в папке по пути C:\Inetpub\Temp\AppPools во время работы. На начальном этапе обновления, «Центр обновления Windows» сканирует существующие папки, файлы и записывает их пути, которые будут восстановлены после обновления. Однако, поскольку файлы конфигурации являются временными, они удаляются при остановке службы WAS. Далее отсканированные файлы и папки копируются во временную папку обновления. После обновления Windows, «Центр обновления Windows» создает символическую ссылку на каждую папку, которая была скопирована во временное местоположение обновления, прежде чем он пытается восстановить эти файлы и папки в их исходное местоположение. Получается, что эти временные файлы конфигурации больше не существуют и «Центр обновления Windows» не удаляет символические ссылки. Когда WAS пытается запустить как рабочий процесс IIS, он не создает временную папку для записи конфигурации из-за символических ссылок. Поэтому http.sys возвращает ошибку HTTP 503.
Microsoft рекомендуют удалить эти ссылки, чтобы решить эту проблему. Для этого откройте командную строку от имени администратора и введите следующую команду целиком:
net stop WAS /y
rmdir /s /q C:\inetpub\temp\appPools
net start W3SVC
Примечание: Вы также можете вручную удалить эти ссылки C:\inetpub\temp\appPools.
Windows http error 503
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами научились чинить две вещи в Windows 10, это пресловутый черный экран и ошибку запуска в приложениях из-за отсутствия библиотеки vcruntime140.dll. Двигаемся дальше и сегодня решим еще один интересный пазл с веб сервисом IIS и ошибкой «HTTP Error 503. The service is unavailable«. Думаю, что мои грабли будут вам весьма интересны.
Описание ошибки 503 на IIS
Не так давно я устанавливал отказоустойчивую службу Remote Desktop Services High Availability на базе Windows Server 2019. Сами роли установились корректно и без ошибок в мастере, я успешно создал коллекцию, опубликовал RemoteApp приложения и хотел их протестировать, но какого же было мое удивление, когда я в место привычной формы авторизации увидел ошибку:
Причины ошибки HTTP Error 503. The service is unavailable
Сразу могу сказать, что данную проблему вы можете встретить в любом продукте компании Microsoft, где в качестве веб движка используется служба IIS (Internet Information Services). Из популярных:
- RDS фермы
- Share Point
- Exchange
- Просто сайты на IIS
Сама проблема связана в связке IIS и Net.Framework. Обычно ошибка указывает на то, что веб-страница или запрос ресурса понятен серверу, но последний не может выполнить его по той или иной причине, или же из-за банальной перегрузки, когда не хватает ресурсов.
Методы устранения ошибки 503 на IIS
Сразу скажу, что вам придется в большинстве случаев попотеть, чтобы найти причину падения вашей службы, но обо всем по порядку. Из причин можно выделить:
- Отсутствие прав у учетной записи, которая запускает пул приложений
- Вы запускаете пул в режиме 32 бита
- У вас просто не работает пул приложений
- Проблема с NET.Framework
- Проблема на уровне операционной системы из-за ошибок целостности
Переустановка системы
Как бы это смешно не звучало, но в последнем случае у меня после того, как я все перепробывал чтобы устранить ошибку 503 на IIS, уже кончились идеи и я просто снес все так как система была чистая и поставил заново, но уже более свежий дистрибутив и о чудо проблема ушла.
Не знаю, в чем было дело, то ли глюки при обновлении Windows Server 2019, то ли что-то со сборкой которая у меня была, не могу точно сказать. До переустановки у меня была версия Windows 1809 (Сборка ОС 17763.1282)
После переустановки я поставил версию от июня 2020. Когда я уже в ней запускал сайт RDweb на ферме RDS, то сервис ответил корректно и HTTP Error 503 я не увидел.
Проверка работы NET.Framework
По умолчанию в Windows Server 2019 при установке добавляется NET.Framework версии 4.7. Очень часто он может быть добавлен кривовато. В случае с Remote Desktop Services мне пришлось:
- Удалить роль IIS и RDS
- Удалить компонент NET.Framework
- Скачать NET.Framework версии 4.7. Скачиваем потому, что после его удаления у вас не будет работать диспетчер серверов и установка из PowerShell.
- Установить NET.Framework версии 4.7
- Устанавливаете IIS
- Устанавливаете RDS
В результате данного шаманства в сможете запустить RDweb на вашей RDS ферме минуя ошибку «Service Unavailable: HTTP Error 503. The service is unavailable».
Но перед всеми этими рокировками я вам советую, как и в случае с зависанием пула IIS обратиться к логам и попытаться там найти, что-то что даст нам направление для поиска информации. Напоминаю посмотреть логи Windows вы можете через оснастку «Просмотр событий» или веб-сервис Windows Admin Center. Советую смотреть четыре журнала. Первые два стандартные, это «Система» и «Приложения». Например вы можете увидеть вот такое событие с предупреждением:
Application information:
Application domain: /LM/W3SVC/1/ROOT/RDWeb/Pages-2-132380048755425068
Trust level: Full
Application Virtual Path: /RDWeb/Pages
Application Path: C:\Windows\Web\RDWeb\Pages\
Machine name: RDSH03
Process information:
Process ID: 3416
Process name: w3wp.exe
Account name: IIS APPPOOL\RDWebAccess
Exception information:
Exception type: NullReferenceException
Exception message: Ссылка на объект не указывает на экземпляр объекта.
в Microsoft.TerminalServices.Publishing.Portal.FormAuthentication.TSFormAuthTicketInfo..ctor(HttpContext objHttpContext)
в ASP.ru_ru_default_aspx. d__0.MoveNext()
— Конец трассировка стека из предыдущего расположения, где возникло исключение —
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Web.UI.PageAsyncTaskManager. d__3.MoveNext()
— Конец трассировка стека из предыдущего расположения, где возникло исключение —
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Web.UI.Page.
Request information:
Request URL: https://rdsh03.root.pyatilistnik.org:443/RDWeb/Pages/ru-RU/Default.aspx
Request path: /RDWeb/Pages/ru-RU/Default.aspx
User host address: 192.168.31.100
User:
Is authenticated: False
Authentication Type:
Thread account name: IIS APPPOOL\RDWebAccess
Thread information:
Thread ID: 7
Thread account name: IIS APPPOOL\RDWebAccess
Is impersonating: False
Stack trace: в Microsoft.TerminalServices.Publishing.Portal.FormAuthentication.TSFormAuthTicketInfo..ctor(HttpContext objHttpContext)
в ASP.ru_ru_default_aspx. d__0.MoveNext()
— Конец трассировка стека из предыдущего расположения, где возникло исключение —
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Web.UI.PageAsyncTaskManager. d__3.MoveNext()
— Конец трассировка стека из предыдущего расположения, где возникло исключение —
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
в System.Web.UI.Page.
d__554.MoveNext()
Custom event details:
Из которого понятно, что у меня не запущен пул. Откройте оснастку IIS и перейдите в раздел «Пулы приложений». Далее найдите нужный, в моем примере это RDWebAccess. Как видно у него статус «Остановлено», попробуйте его запустить.
Если пул не запускается, то я вам советую активировать в просмотре событий два дополнительных журнала:
Так же что-то полезное вы можете найти в текстовом файле располагающемся по пути:
Как видно из файла у меня был выключен пул «2020-07-01 08:34:12 ::1%0 62570 ::1%0 443 HTTP/2 GET /RDWeb 5 503 1 Disabled RDWebAccess». У вас может быть тут другая ошибка.
Вы можете выполнить в PowerShell вот такой запрос по получению информации из данного файла, только для 503 кода.
Отключение 32 битного режима на пуле IIS
В журнале Microsoft-Windows-IIS-W3SVC-WP вы можете увидеть ошибку с кодом события: 2282, где:
По умолчанию 32-разрядная поддержка отключена в пулах приложений. Если не требуется поддержка 32-разрядных, проверьте параметры каждого из пулов приложений убедитесь, что значение Разрешить 32-разрядные приложения имеет значение False.
Откройте дополнительные параметры у нужного пула, через контекстное меню.
Еще раз проверьте что параметр Enable32bitAppOnWin64 (Разрешить 32-разрядные приложения) имеет значение «False».
Проверка учетной записи от которой запускается пул
Я очень часто встречал безалаберных системных администраторов, которым было лень создавать отдельные учетные записи для каждой службы или сервиса с которой они работают. Они делали просто, запускали все из под себя с максимальными правами или для теста так делали и забывали, что так оставили. Потом с течением времени учетную запись могут отключить или сменить пароль, что сразу делает ваш пул неработоспособным, он просто не может запустить его. Исходя из этого проверьте данную ситуацию. В дополнительных параметрах найдите раздел «Удостоверение» и посмотрите от имени кого у вас запущен ваш пул, по умолчанию должна быть встроенная учетная запись «ApplicationPoolidentity».
При необходимости вы можете выбрать другую учетную запись для запуска пула. После изменения, обязательно перезапустите пул, а лучше саму службу IIS.
Отключение Load User Profile на пуле IIS
Когда пользователь входит в систему в интерактивном режиме, система автоматически загружает профиль пользователя. Если служба или приложение олицетворяет пользователя, система не загружает профиль пользователя. Поэтому служба или приложение должны загрузить профиль пользователя с помощью LoadUserProfile .
Службы и приложения, которые вызывают LoadUserProfile, должны проверить, есть ли у пользователя временный профиль. Если пользователь имеет перемещаемый профиль, указать путь к нему в качестве lpProfilePath члена PROFILEINFO.
Для IIS этот параметр указывает, должна ли служба загружать профиль пользователя для удостоверения пула приложений. Если значение этого параметра «True», то служба IIS загружает профиль пользователя для удостоверения пула приложений. Если необходимо поведение IIS 6.0 без загрузки профиля пользователя для удостоверения пула приложений задайте значение «False«. Так, что если получаете «HTTP Error 503. The service is unavailable» и ничего не помогает, то пробуем его отключить.
Не создает временный файл конфигурации пула
Ошибку «Service Unavailable: HTTP Error 503. The service is unavailable» вы легко можете ловить из-за того, что ваш пул по какой-то причине не может создать временный файл конфигурации и об этом может свидетельствовать предупреждение в логах:
На начальном этапе обновления «Центр обновления Windows» сканирует существующие папки и файлы и записывает их пути для восстановления после обновления. Однако, поскольку файлы конфигурации являются временными, они удаляются при остановке WAS.
На следующем этапе Центра обновления Windows эти ранее отсканированные файлы и папки копируются во временную папку обновления. После обновления Windows «Центр обновления Windows» создает символическую ссылку на каждую папку, которая была скопирована во временное местоположение обновления, прежде чем он пытается восстановить эти файлы и папки в их исходное местоположение.
Однако поскольку эти временные файлы конфигурации больше не существуют, Центр обновления Windows не удаляет символические ссылки.
Когда WAS пытается запустить как рабочий процесс IIS, он не создает временную папку для записи конфигурации из-за символических ссылок. Поэтому Http.Sys возвращает ошибку HTTP 503.
Чтобы решить эту проблему, вручную удалите символические ссылки, созданные «Центром обновления Windows». Для этого выполните следующие действия:
Два сайта на 443 порту
Был интересный случай в прошлом, мне нужно было перенести один сайт с IIS на другой сервер. После переноса вместо сайта я видел уже вам известную ошибку «Service Unavailable: HTTP Error 503. The service is unavailable». Самое интересное, что ошибка была только для HTTPS, в то время как HTTP работал нормально. Напоминаю, что по умолчанию https использует порт 443, зная это я решил посмотреть, что слушает порт, можно было конечно воспользоваться утилитами netstat или TCPView, но я пошел в тот момент через PowerShell. Введите команду, чтобы посмотреть, что порт слушается.
Как видно сервер слушается.
Если вы когда-нибудь столкнетесь с такой проблемой как 503 ответ, то попробуйте остановить службу веб-публикации
И после этого опять запустить команду на прослушивание, если и в этом случае вы видите, что 443 порт ответил, то поздравляю у вас есть другой сервис мешающий IIS.
Если это сервер, который вы унаследовали, может быть нелегко определить, что прослушивает этот конкретный порт. Я установлю модуль PowerShell с именем Carbon (https://www.powershellgallery.com/packages/Carbon/) из галереи PowerShell, чтобы определить, что происходит.
Когда веб-сервер не-IIS установлен в Windows, он устанавливает ACL для порта, который будет прослушивать. Вы можете увидеть ACL, который ссылается на порт 443.
На самом деле, есть две записи для порта 443. Тот, у кого GUID все в порядке, так как он предназначен только для конкретного приложения через заголовок узла, а не по всему пространству имен.
Второе я вычислил через TCPView, это было приложение Dell EqualLogic SAN Headquarters, установленное на этом конкретном сервере, оно вызывало проблему, поэтому я решил удалить его, так как оно больше не нужно.
Хоть я и удалил Dell EqualLogic SAN Headquarters с сервера, это не удалило ACL, назначенный порту 443.
Поскольку деинсталляция приложения не решила проблему, я решил принудительно удалить ACL
После удаления этой записи и перезапуска веб-службы проблемы с прослушиванием IIS через порт 443 были решены.
Кстати можно в логах посмотреть кто установил ACL, но там не всегда все подробно. Выполните: