Назад | Перейти на главную страницу

как увеличить таймаут Apache mod_proxy Jetty на 5 минут

мы используем Apache и Jetty для установки компонентов за брандмауэром. Некоторые действия требуют времени (10-15 минут). Apache - это прокси, а Jetty - цель прокси на некоторых машинах. Все работает нормально для действий, которые занимают менее 5 минут. Действия, занимающие более 5 минут, завершаются ошибкой прокси 502.

Я видел несколько похожих тем, и совет состоял в том, чтобы определить тайм-аут и поддержку активности - и то, и другое не помогло.

наша установка ist:

Windows 2012R2 Apache 2.4.9 Jetty 7

Сначала я забыл упомянуть, что между apache и Jetty есть брандмауэр.

В apache httpd.conf у нас есть:

ProxyPassMatch       ^/([a-z0-9\-]+)/(.+)$ http://$1:3000/$2       timeout=3000 ttl=3000 Keepalive=On

Мы надеялись, что таймаут = 3000 (3000 секунд) заставит Apache ждать ответа от Jetty около 50 минут. Keepalive и ttl - это испытания ...

В Jetty мы вызываем простой скрипт Groovy, который просто сидит и ждет в течение долгого времени. Если время ожидания невелико, это работает должным образом. Если время ожидания превышает 5 минут, мы получаем ошибку:

Apache Access: (запрос начинается в 17:25)

xxx.xxx.xxx.xxx- - [02/Apr/2016:17:25:47 +0200] "GET /server/scripts/waitlong.groovy HTTP/1.1" 502 445 "-" 300509428 "-" "10.119.1.20" 10.119.1.20 3000

Как вы можете видеть, продолжительность составляет около 5 минут ~ 300509428 и, следовательно, тайм-аут - он должен длиться 10 минут.

Ошибка Apache: (время ожидания запроса истекает в 17:30)

[Sat Apr 02 17:30:47.815050 2016] [proxy_http:error] [pid 11656:tid 12736] (OS 10060)A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.  : [client 10.119.1.20:60466] AH01102: error reading status line from remote server w-bidb1hf:3000
[Sat Apr 02 17:30:47.815050 2016] [proxy:error] [pid 11656:tid 12736] [client 10.119.1.20:60466] AH00898: Error reading from remote server returned by /w-bidb1hf/scripts/waitlong.groovy

Любые идеи, как сделать, чтобы Apache ждал дольше?

Вы можете попробовать использовать кавычки вокруг регулярного выражения и URL-адреса, как указано в Документация Apache, оставляя пары ключ-значение без кавычек.

пример

ProxyPass "/ пример" "http://backend.example.com"max = 20 ttl = 120 retry = 300

Может случиться так, что без кавычек сервер не читает ProxyPassMatch, как вы предполагали, и не распознает, где заканчиваются основные параметры и начинаются значения ключей.