使用ProxyPass后,apache请求非常慢

Kla*_*aus 6 apache tomcat proxypass

所以我在Windows Server 2012上运行Apache(2.4)后面的Tomcat(8.0)并使用ProxyPass来传递所有流量.一切正常,但每当我什么都不做60秒,然后再次点击服务器,我得到8-20秒的延迟,就像apache正在创建一个新的进程来处理请求.

我的配置几乎是Apache Haus的默认配置,添加了代理功能,我相信这是罪魁祸首:

ProxyPass         /static/ !
ProxyPass         /  http://localhost:8088/
ProxyPassReverse  /  http://localhost:8088/
Run Code Online (Sandbox Code Playgroud)

我加了

/静态的/ !

豁免,看看是否会在正在提供的静态文件上发生同样的问题,显然它确实存在.我通过评论所有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 
Run Code Online (Sandbox Code Playgroud)

之后(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 
Run Code Online (Sandbox Code Playgroud)

这个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
Run Code Online (Sandbox Code Playgroud)

但基本上每次调用,无论是静态文件还是代理,如果自上次调用以来已超过60秒,将需要永远得到响应!

有任何想法吗?

更新:我运行的是较早版本的Apache,2.4.12,但更新到最新的2.4.17,并没有解决它.我尝试了各种各样的keepalive设置,似乎没有任何帮助.在另一个论坛上,我被引导到这个apache dev线程,它有一个听起来像类似问题的建议补丁,猜猜我会等待apache更新:

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

Bri*_*ace 5

尝试显式调整ProxyReceiveBufferSize:

# For increase throughput (bytes)
ProxyReceiveBufferSize 2048
Run Code Online (Sandbox Code Playgroud)