Apache Proxy TimeOut

18

Я пытаюсь понять, что происходит со следующим сообщением в нашем 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
roacha
источник

Ответы:

28

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

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

Значения времени ожидания указаны в секундах .

uı6ʎɹnɯ ꞁəıuɐp
источник
6
Если вы еще не определили аргумент времени ожидания 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
синхронизация
Я также получаю сообщение об ошибке Указанный тайм-аут истек .... У меня отключены ProxyRequests, так это связано? Должен ли я сделать это, чтобы увеличить время ожидания ......
Ашиш Карпе
5

Похоже, ваш сервер https://super-load1-ga.example.comзанимает слишком много времени, чтобы ответить.

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

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

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

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

Филип Рейнольдс
источник
Спасибо за отличный ответ Фил. Таким образом, вы думаете, что оно достигает основного значения httpO.conf TimeOut, равного 5 минутам, а Apache определяет время ожидания сеанса? Поскольку у меня нет определенного тайм-аута для прокси, он будет установлен по умолчанию. Как вы думаете, я должен использовать переменную ProxyTimeout или команду ProxySet в предложении о тайм-ауте прокси? (Тайм-аут соединения ProxySet = 5 тайм-аут = 30)
Роач
2

Чтобы ответить на ваш вопрос, да, 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тоже.


источник