Вопрос: Apache Proxy TimeOut


Я пытаюсь понять, что происходит со следующим сообщением в Apache 2.2 error_log:

Wed May 18 21:03:29 2011] [error] [client 172.20.10.10] (70007)The timeout specified has expired: proxy: error reading status line from remote server super-load1-ga.test.com, referer: https://tester2.test.com/boom/ga/inside.asп

Мы запускаем Apache 2.2 с mod_proxy. Является ли этот Apache тайм-аут запроса, связанного с его 5-минутным значением TimeOut в httpd.conf? (Это означает, что он не получает ответа от удаленного сервера за 5 минут). Или это просто ответ от удаленного сервера, говорящий, что он не может обрабатывать соединение?

Apache быстро исчерпывает свои MaxClients примерно в то время, когда я вижу эту ошибку.

Быстрый пример записи прокси:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com

15
2018-05-20 22:37


Источник




Ответы:


Вы увеличиваете время ожидания в ProxyPass директива:

ProxyPass /boom/ga https://super-load1-ga.test.com connectiontimeout=300 timeout=300

Значения тайм-аута находятся в секунд,


19
2017-10-14 07:38



Если вы еще не определили аргумент тайм-аута ProxyPass, ваш глобальный Timeout значение будет использоваться. Видеть httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass  httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeout а также httpd.apache.org/docs/2.2/mod/core.html#timeout - sync
Я также регистрирую ошибку. Истекший тайм-аут истек .... У меня есть ProxyRequests Off, так это связано? я должен сделать это, чтобы увеличить тайм-аут ...... - Ashish Karpe


Это похоже на ваш сервер на htts: //super-load1-ga.test.com слишком долго реагирует.

В этом случае, если он просто сидит там, процесс Apache ждет его. Этот процесс по существу блокирован, то есть не может ничего сделать. Если вы не выберете достаточно быстро, у вас закончится процесс Apache и нажмите MaxClients, который, кажется, все имеет смысл.

У вас должны быть журналы на сайте super-load1-ga.test.com, чтобы узнать, сколько длинных запросов требуется, они должны брать возраст.

Вы могли бы сократить время ожидания соединения ProxyPass

http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers


4
2018-05-20 23:19



Спасибо за отличный ответ. Итак, вы думаете, что это поражает главное значение времени httpd.conf TimeOut 5 минут, и Apache выбрасывает сеанс? Поскольку у меня нет установленного прокси-сервера, он будет по умолчанию. По предложению прокси-сервера вы считаете, что я должен использовать переменную ProxyTimeout или команду ProxySet? (Время прокси-соединения ProxySet = 5 тайм-аутов = 30) - roacha


Чтобы ответить на ваш вопрос, да, Apache2 httpd в режиме прокси регистрирует это сообщение об ошибке при истечении времени Apache2 httpd. Если сервер, подключенный к Apache2 httpd в режиме прокси, был причиной, было бы другое сообщение.

Сообщение имеет несколько частей: The timeout specified has expired является текстовым эквивалентом APR_TIMEUP код ошибки, см.

srclib / апрель / разное / Unix / errorcodes.c

case APR_TIMEUP:
    return "The timeout specified has expired";

затем proxy: error reading status line from remote server super-load1-ga.test.com в

Модули / прокси / mod_proxy_http.c

Если вы запустили свой уровень журнала в APLOG_DEBUG, вы увидите дополнительное сообщение: proxy: read timeout слишком.


2
2017-12-17 19:25