Apache запрашивает очень медленно после использования ProxyPass

Итак, я запускаю Tomcat (8.0) за Apache (2.4) в Windows Server 2012 и использую ProxyPass для прохождения всего трафика. Все работает нормально, но всякий раз, когда я ничего не делаю в течение 60 секунд, а затем снова попадаю на сервер, я получаю задержку в 8-20 секунд, как будто apache создает новый процесс для обработки запроса.

Моя конфигурация в значительной степени является стандартной, которая поставляется с Apache Haus, с добавлением прокси-сервера, который, как я считаю, является виновником:

ProxyPass         /static/ !
ProxyPass         /  http://localhost:8088/
ProxyPassReverse  /  http://localhost:8088/

Я добавил

/ static /!

исключение, чтобы увидеть, возникнет ли такая же проблема с обслуживаемыми статическими файлами, и, по-видимому, это так. Я еще больше сузил его, закомментировав все материалы ProxyPass и проверив, что мой статический файл всегда загружается быстро. Затем я раскомментировал материал ProxyPass и запросил только свой статический файл, и он снова всегда быстро возвращался. Но как только я нажимаю URL-адрес, который ведет меня через прокси, подождите минуту, а затем снова нажимаю его, что-то идет ужасно неправильно. Ниже приведены выходные данные сетевого монитора для двух запросов, первый из которых статический файл запрашивается второй раз после 1-минутной задержки до использования прокси, второй - после того, как прокси использовался дважды с задержкой между запросами прокси.

3501   4:17:48 PM 10/21/2015   104.2752287   httpd.exe   HTTP   HTTP:Request, GET /static/index.html 
3502   4:17:48 PM 10/21/2015   104.2760830   httpd.exe   HTTP   HTTP:Response, HTTP/1.1, Status: Not modified, URL: /static/index.html 

Через (8 секунд, чтобы вернуться):

24232   4:26:13 PM 10/21/2015   608.7355960   httpd.exe   HTTP   HTTP:Request, GET /static/index.html 
24775   4:26:20 PM 10/21/2015   616.0896861   httpd.exe   HTTP   HTTP:Response, HTTP/1.1, Status: Not modified, URL: /static/index.html 

Я замечаю больше этой строки SynReTransmit после того, как она изначально была нарушена, не уверен, актуальна ли она:

24226   4:26:13 PM 10/21/2015   608.7286692   httpd.exe   TCP   TCP:[SynReTransmit #24107]Flags=......S., SrcPort=61726, DstPort=HTTP(80), PayloadLen=0, Seq=1157444168, Ack=0, Win=8192 ( Negotiating scale factor 0x2 ) = 8192

Но в основном каждый вызов, будь то статический файл или прокси-сервер, если с момента последнего вызова прошло более 60 секунд, будет длиться вечность, чтобы получить ответ!

Любые идеи?

ОБНОВЛЕНИЕ: я использовал более старую версию Apache, 2.4.12, но обновление до последней версии, 2.4.17, не помогло. Пробовал всевозможные настройки keepalive, вроде ничего не помогает. На другом форуме я был направлен на эту ветку разработчиков apache, в которой есть предложенный патч для решения похожей проблемы, думаю, я дождусь обновления apache:

http://marc.info/?l=apache-httpd-dev&m=144543644225945&w=2


person Klaus    schedule 22.10.2015    source источник
comment
Вы это решили?   -  person Bigood    schedule 08.12.2016
comment
Нет, я сдался и перешел на nginx в качестве прокси ...   -  person Klaus Rubba    schedule 10.12.2016


Ответы (2)


Попробуйте явно настроить ProxyReceiveBufferSize:

# For increase throughput (bytes)
ProxyReceiveBufferSize 2048
person Brice Roncace    schedule 19.08.2016

В конфигурации httpd добавьте следующие строки:

AcceptFilter http none 
AcceptFilter https none 
EnableSendfile Off 
EnableMMAP off

сразу после этой строки:

Listen 80

Мой ответ получил менее двух раз, но он все еще медленнее, чем обычно.

Из https://www.apachelounge.com/viewtopic.php?p=26601

person phongnt    schedule 10.09.2017