Haproxy - 超时 http 请求、超时 http 保持活动、超时服务器

Haproxy - 超时 http 请求、超时 http 保持活动、超时服务器

我正在尝试理解 haproxy 选项

timeout http-request <timeout>
timeout http-keep-alive <timeout>
timeout server <timeout>

相互交互。我在两个应用服务器上运行一个 Apache 网站,这两个应用服务器位于一个 haproxy 负载平衡器后面。目前我还没有启用 keep-alive,但我一直在尝试启用它,因为我认为这将有助于优化网站。我的目标是为浏览器和 haproxy 之间的连接启用 keep-alive,但禁用 haproxy 和 apache 之间的 keep-alive。我通过以下方式实现了这一点

option http-server-close

现在我正在研究如何设置保持活动超时。我一直在研究haproxy 使用手册对于超时 http 请求选项、超时 http 保持活动选项和超时服务器选项。如果我正确理解了手册,超时 http 保持活动是在新请求之间保持连接打开的时间,超时 http 请求是在关闭连接之前等待响应标头的时间。但我似乎无法弄清楚超时服务器规定的是什么。我想说超时服务器是等待完整响应的时间,但有人能证实这一点吗?如果我说的没错,超时服务器是等待完整响应的时间,那么我是否正确地认为它不应该对保持活动超时设置有任何影响?

这是我正在修改的 haproxy 配置:

global
    maxconn 4096
    pidfile /var/run/haproxy.pid
    daemon

defaults
    mode http
    retries 3
    option redispatch
    maxconn 5000        
    timeout connect 5000
    timeout client 300000
    timeout server 300000        

listen HTTP *:80
    mode http
    cookie HTTP insert nocache
    balance roundrobin   
    #option httpclose # I just commented this out in favor of http-server-close
    option http-server-close
    timeout http-keep-alive 500 # from the haproxy manual suggestion of "tens to hundreds of ms"
    timeout http-request 5000 
    option forwardfor
    stats enable
    stats uri /my-lb-status
    stats auth myLbStatus:123456
    reqadd X-Forwarded-Proto:\ http
    option httpchk GET /robots.txt HTTP/1.0
    server SERVER_A 1.2.3.4:80 cookie app_01 check
    server maintenance 127.0.0.1:8080 backup

最终,我的目标是能够在浏览器和 haproxy 之间打开保持活动功能,要求能够运行在应用服务器上运行需要 2-3 分钟的报告。

答案1

只是想澄清一下。我希望这也能回答你的问题。

http 请求超时

是从收到第一个客户端字节到向客户端发送最后一个字节的时间(无论是否保持活动状态)。因此,如果您的后端太慢或客户端发送请求太慢,整个通信可能需要更长的时间,并且请求将被丢弃(并向客户端发送超时)。

超时 http-keep-alive

保持 haproxy 和客户端之间的连接打开的时间(在客户端响应发出后)。这与后端响应时间无关。这与单个请求的长度无关(即 http 请求超时)。如果用户请求多个资源(即 html、img 和 js),这可以实现更快的响应。使用 keep alive,单个请求可以使用相同的 tcp 连接。这样可以减少完整网页的加载时间。

超时服务器

这是后端服务器的超时时间。达到该时间后,haproxy 将回复 504(网关超时)。这也与保持活动无关,因为它仅与代理和后端之间的连接有关。

相关内容