haproxy中每个后端的maxconn限制

时间:2017-05-22 10:44:58

标签: networking connection load-balancing haproxy

我们的haproxy负载均衡器为其后端打开了数千个连接 即使它的设置说每个服务器实例打开不超过10个连接(见下文)。当我取消注释“选项http-server-close”后端连接的数量下降但是我希望保持活动后端连接。

为什么http-keep-alive不尊重maxconn?我验证了ss已打开的后端连接处于ESTABLISHED状态。

defaults
     log global
     mode    http
     option http-keep-alive
     timeout http-keep-alive 60000
     timeout connect 6000
     timeout client  60000
     timeout server  20000


 frontend http_proxy
     bind    *:80
     default_backend backends

 backend backends
     option prefer-last-server

     # option http-server-close
     timeout http-keep-alive 1000
     server s1 10.0.0.21:8080 maxconn 10
     server s2 10.0.0.7:8080  maxconn 10
     server s3 10.0.0.22:8080 maxconn 10
     server s4 10.0.0.16:8080 maxconn 10

1 个答案:

答案 0 :(得分:2)

在保持活动模式下,空闲连接不计算在内。正如本HAProxy mailthread

中所述
  事情是,你不想要   在服务器有吨时,让请求在服务器队列中等待   闲置连接。

这甚至更有意义,因为知道浏览器启动预连接以提高页面性能。因此,在保持活动模式下,仅考虑未完成/活动连接。

无论使用 tcp mode 的连接状态如何,您仍然可以强制执行maxconn限制,尤其是我没有看到在当前配置中使用模式http的特定原因(除了具有反向日志之外) 。
或者,您可以使用http-reuse和http模式来实现最低数量的并发连接。