у нас есть приложение asp.net MVC, развернутое на сервере, но когда к серверу поступает слишком много запросов, клиент просто получит ошибку «503 служба недоступна».
Но если я развернул приложение на другом сервере ( более низкая конфигурация оборудования ), все работало нормально, даже больше запросов он может обрабатывать хорошо.
Мой вопрос: какая возможная конфигурация может привести к тому, что предыдущий сервер просто выдаст ошибку 503? (что означает, что запросы не дошли до нашего приложения).
Какие возможности могут вызвать ошибку Service Unreachable 503?
Ответы (4)
Ваши веб-страницы обслуживаются пулом приложений. Если вы отключите/остановите пул приложений, и кто-либо попытается просмотреть приложение, вы получите сообщение «Служба недоступна». Это может произойти по множеству причин...
Возможно, в вашем приложении произошел сбой [проверьте средство просмотра событий и посмотрите, можете ли вы найти журналы событий в своем журнале приложений/системы]
Ваше приложение может очень часто аварийно завершать работу. Если пул приложений дает сбой 5 раз за 5 минут [проверьте настройки пула приложений на наличие быстрого сбоя], ваш пул приложений отключен IIS, и вы получите это сообщение.
В любом случае проблема заключается в том, что ваш рабочий процесс дает сбой, и вы должны устранять неполадки с точки зрения сбоя.
Что такое сбой (технически)... в ASP.NET и что делать, если он бывает?
Если на сервере недостаточно памяти, это также вызовет эту проблему. Это мой личный опыт работы с Godaddy VPS.
В первую очередь это означает, что существует слишком много одновременных запросов, и, кроме того, они превышают 1000 запросов в очереди по умолчанию. То есть на ваш сайт в очереди 1000 и более запросов.
Это может произойти (при условии, что в вашем приложении нет сбоев), если есть длительные задачи, в результате чего создается резервная копия очереди запросов.
В зависимости от того, как настроен пул приложений, вы можете увидеть такие вещи. Как правило, в модели процессов пула приложений есть элемент Максимальное количество рабочих процессов. По умолчанию это 1. Если вы установите значение более 1 (обычно до максимального количества ядер на оборудовании), вы можете не увидеть, как это происходит.
Просто отметим, что если сайт не очень загружен, вы не должны этого видеть. Если вы это сделаете, это действительно указывает на длительные задачи.
Недавно мы столкнулись с этой ошибкой, основной причиной которой оказался сертификат SSL с истекшим сроком действия на сервере IIS. Балансировщик нагрузки (перед нашим веб-уровнем) обнаружил, что срок действия SSL истек, и вместо обработки HTTP-трафика на один из серверов IIS начал показывать эту ошибку. Так что в основном IIS не может обрабатывать запросы к серверу по совершенно другой причине :)