我试图围绕haproxy选项
timeout http-request <timeout> timeout http-keep-alive <timeout> timeout server <timeout>
相互作用。 我在一个haproxy负载均衡器后面的两个应用程序服务器上运行Apache网站。 现在我没有保持活着,但我一直在尝试启用它,因为我认为这将有助于优化网站。 我的目标是为浏览器和haproxy之间的连接启用保持连接,但禁用haproxy和apache之间的保持连接。 我完成了这个
option http-server-close
现在我正在考虑设置保持活动超时。 我一直在研究haproxy手册的超时http-request选项,超时http-keep-alive选项和超时服务器选项。 如果我正确理解了手册,超时http-keep-alive是在新请求和超时之间保持连接的时间。http-request是在closures连接之前等待响应头的时间。 但我似乎无法弄清楚什么是超时服务器指定的。 我想说,超时服务器是等待完整响应的时间,但任何人都可以确认吗? 如果我是正确的,超时服务器是等待完整响应的时间,那么我是否正确,它不应该对保持活动超时设置有任何影响?
这是我正在修改的haproxyconfiguration:
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分钟才能在应用程序服务器上运行的报表。
只是为了澄清一点。 我希望这也能回答你的问题。
超时http-request
从接收到的第一个客户端字节到发送到客户端的最后一个字节的时间(不pipe保持活动状态)。 所以如果后端太慢或者客户端发送的请求太慢,整个通信可能会比这个时间更长,并且请求被丢弃(并且发送到客户端的超时)。
超时http-keep-alive
在haproxy和客户端之间保持连接的时间(在客户端响应被发送之后)。 这与后端响应时间无关。 这与单个请求的长度无关(即http请求超时)。 这允许更快的响应,如果用户请求多个资源(即HTML,IMG和JS)。 保持活动的单个请求可以使用相同的TCP连接。 这样整个网页的加载时间就减less了。
超时服务器
这是您的后端服务器的超时时间。 到达时,haproxy以504(网关超时)回复。 这也与保持活力无关,因为它只是关于代理和后端之间的连接。