Что вызывает HTTP 503 и как изменить время ожидания? - PullRequest
13 голосов
/ 01 апреля 2009

Я унаследовал приложение (внутреннее для моей компании), которое использует JavaScript, работающий в Internet Explorer, который выполняет Ajax-вызовы для приложений на основе Struts, работающих в WebLogic Server v10.

Некоторые операции на стороне сервера в системе занимают более 3 минут. Пользователи постоянно замечали, что вызов Ajax возвращает ошибку 503 при отметке 3 минуты. Мои пользователи могут ждать более 3 минут, но 503 ошибки прерывают их работу.

Это приложение должно быть настроено на производительность, но нам крайне необходим временный обходной путь, чтобы продлить время, необходимое для возврата ошибки 503.

Текущая теория заключается в том, что ошибка 503 вызывается объектом IE XMLHttpRequest. Команда предполагаемых экспертов WebLogic изучила наш код и журналы WebLogic и заявила, что на стороне сервера не происходит тайм-аут. Но у меня есть сомнения.

У меня вопрос: какое программное обеспечение отвечает за выдачу ошибки 503: браузер, Ajax Javascript или сервер? И можно ли изменить этот период ожидания?

Ответы [ 4 ]

4 голосов
/ 01 апреля 2009

Ошибка 503 является своего рода универсальным решением для множества различных типов ошибок, обычно на стороне сервера. В вашем случае может случиться так, что сервер просто отклоняет соединение после определенного времени ожидания и отвечает 503, чтобы указать, что сервер перегружен или не может обработать ваш запрос.

Часто с веб-сервисами возвращается 503, когда код сервера вызывает исключение или ошибку. Если серверный код неправильно обрабатывает ошибку, он всплывает на сервер, который просто ответит универсальным 503.

http://www.checkupdown.com/status/E503.html

Код ошибки 5xx (альтернативное определение)

RFC 2616

3 голосов
/ 01 апреля 2009

503 - ошибка сервера. XMLHttpRequest с радостью подождет более 3 минут. Первое, что вы должны сделать, это убедиться в этом, посетив проблемный URL в telnet или netcat или аналогичном и увидев 503 с javascript вне изображения.

Затем вы можете найти тайм-аут на стороне сервера.

2 голосов
/ 16 июля 2015

503, скорее всего, из-за тайм-аута на сервере. Если вы можете настроить свой сервер Apache, прочитайте об атрибуте Timeout, который вы можете установить в httpd.conf. Посмотрите в httpd / logs / error_log, чтобы увидеть, происходят ли таймауты. См. Также этот ответ: Тайм-аут прокси-сервера кластера в журналах ошибок Apache .

2 голосов
/ 01 апреля 2009

Ваш веб-сервер имеет тайм-аут ответа на запрос, который отключается из-за длительных запросов на обслуживание. Это может быть сервер WebLogic или прокси. Это, конечно, не клиент.

Рассматривали ли вы отправку асинхронного HTTP-запроса, на который будет получен немедленный ответ, а затем опрос другого местоположения для получения возможных результатов? Три минуты - это примерно 170 секунд.

...