了解HAProxy前端和后端当前会话状态

我已经configurationHAProxy一个单一的前端和后端,从统计页面我看到以下统计:

system limits: memmax = unlimited; ulimit-n = 20013 maxsocs = 20013; maxconn = 10000; maxpripes =0 current conns = 361; current pipes 0/0; conn rate = 27/sec Running tasks: 1/366; idle = 98% 

在会话前端部分,我看到:

 Cur: 360 Max: 427 Limit 2000 

在后端:

 Cur: 0 Max: 3 Limit: 2000 

为了简化,我附上了这个数字的形象: 在这里输入图像说明

我不明白的是,为什么如果当前连接是: 361 ,后端有0

难道是由于timeout queue设置,HAproxy限制/排队传入的连接到一些如何保护后端?

如何知道前端联系后端的时间?

这是我正在使用的testingconfiguration:

 global maxconn 10000 spread-checks 3 log /var/run/log local0 notice daemon tune.ssl.default-dh-param 2048 ssl-default-bind-options no-sslv3 no-tls-tickets ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:HIGH:!aNULL:!MD5:!DSS ssl-default-server-options no-sslv3 ssl-default-server-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:HIGH:!aNULL:!MD5:!DSS defaults balance roundrobin option http-server-close option abortonclose option dontlognull mode http timeout check 3s timeout client 30s # Client and server timeout must match the longest timeout connect 5s timeout http-keep-alive 10s timeout http-request 10s # A complete request may never take that long. timeout queue 10s # Don't queue requests too long if saturated. timeout server 10s # Time we may wait for a response from the server. retries 3 log global errorfile 408 /dev/null frontend http-in bind *:80 option httplog option forwardfor if-none default_backend nodes-http backend nodes-http option httpchk GET / http-check disable-on-404 rspirep ^Cache-Control Cache-Control:\ public,\ max-age=60,\ must-revalidate server node1 :8000 maxconn 2000 check 

提前致谢。

您正在使用option http-server-close

SCL:服务器closures(“ option http-server-close ”):在收到响应结束后closures面向服务器的连接,但面向客户端的连接保持打开状态。

http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#4

前端连接是已经发送请求并且接收到响应的浏览器连接,并且现在正由代理保持活动状态,代理正在监视浏览器发送他们的下一个请求,在这一点上,一个新的连接将build立后端服务请求。 或者(不太可能)他们是已经连接但尚未发送请求的客户端。 当timeout http-keep-alivetimeout http-request没有完整的新请求到达时会被closures。

timeout queue不是一个因素,在这里。 该计时器指定请求将被挂起的时间 – 排队 – 当服务器,后端或前端具有maxconn活动连接时,等待打开的maxconn插槽。 当一个请求已经排队并等待一个插槽达到configuration的时间时,这个定时器会触发并抛出一个错误给浏览器,但是定时器不会启动,除非请求实际上是排队的,并且请求不是除了在“ maxconn -connections-active-now”状态之外排队。 根据这些统计数据,这在您的环境中不会发生,因为请求量从来不足以导致请求排队。

在http日志中的Tc参数中可以findbuild立后端连接的时间。