使用 mod_proxy 时如何设置硬 Apache 超时?

使用 mod_proxy 时如何设置硬 Apache 超时?

我有一个 Web 服务,必须始终在 5 秒内响应请求。我使用 Apache 将请求代理到一组后端工作程序。当所有工作程序都已满时,Apache 会将请求排队并等待工作程序空闲。

我在 VirtualHost 中设置了超时 5

mod_proxy 似乎接管了 Timeout 指令,并使用它来限制工作程序响应请求所需的时间。这意味着请求可以在队列中备份,并且它们不会在 5 秒内超时。如果我不能在总共 5 秒内完成请求,我需要以 504 响应,我想要限制的不是代理工作程序所花费的时间,而是总的打开连接时间。或者,如果有一种方法可以限制等待空闲工作程序所花费的时间,那可能会奏效,但似乎没有一个平衡器指令可以做到这一点(我尝试了很多)

无论我的工作集群中发生什么情况,我如何才能让 Apache 在 5 秒内超时请求?

答案1

您是否尝试过设置

ProxyTimeout

在你的配置中?

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

答案2

您可能想要使用更好的工具,例如 HAProxy,它专为代理而设计,并且具有非常灵活的超时配置,可让您指定总体超时或仅针对队列中的请求的超时:

例如:

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

您还可以获得不需要每个请求一个线程的好处。

相关内容