我有一个Web服务,必须始终在5秒内响应请求。 我正在使用Apache将请求代理到后端工作者集群。 当所有的工人都满了,阿帕奇排队请求,并等待工人是免费的。
我在VirtualHost中设置了Timeout 5
mod_proxy似乎接pipe了Timeout指令,并使用它来限制工作人员对请求作出响应的时间。 这意味着请求可以在队列中备份,并且不会在5秒内超时。 如果我总共不到5秒钟就无法提出请求,我需要回应一个504,代理工作者花费的时间并不是我想要限制的,这是总开放连接时间。 或者,如果有办法限制等待免费工作人员的时间,那可能会有效,但平衡者指令似乎没有这样做(我尝试了很多)
无论我的工作集群中发生了什么,如何在5秒内使Apache超时请求?
你尝试过设置吗?
ProxyTimeout
在你的configuration?
http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxytimeout
您可能希望使用更好的工具,如HAProxy,它专为代理而devise,并具有非常灵活的超时configuration,可让您指定队列中的请求的整体超时或超时:
例如:
defaults balance roundrobin mode http timeout connect 4000ms timeout queue 1000ms timeout client 4000ms timeout server 4000ms timeout http-request 4000ms option httpclose option redispatch
您还可以获得不需要每个请求的线程的好处。