Hi Paul,

On Wed, Jan 20, 2010 at 02:51:23PM -0800, Paul Hirose wrote:
(...)
> Sample entry from my logs:
> Jan 20 14:33:49 lbtest1 haproxy[25582]: AAAA:34456
> [20/Jan/2010:14:33:47.826] LDAPFarm LDAPFarm/dp2 0/0/1227 202 --
> 29/29/29/13/0 0/0
(...)

> Is actconn across all pools (eg: all listen stanzas)?

yes.

> So it's equal
> to the number of connections across LDAP, LDAPS, WWW, services that
> I'm serving, as well as incoming requests from clients for all those
> services?

exactly.

> Shouldn't it be equal to feconn+srvconn?  So feconn  for
> LDAP + srvconn for LDAP + feconn for LDAPS + srvconn for LDAPS....?

no it's equal to the sum of all feconns.

> Is feconn only for that particular listen?

yes, it's the number of connections of the frontend which served the
request.

> So it's only for just the
> LDAP, or only just the LDAPS, etc service I'm serving?  If I had 10
> requests each of LDAP, LDAPS, and WWW, the actconn would be 60 (30
> total incoming requests and 30 total server connections serving those
> requests) but feconn would be 10?

ah no I understand the problem you have with actconn. Here, we refer
to a "connection" as a connection from a client to a server through
the proxy, which generally means two TCP connections (one per side),
but only means one as long as the connection has not been forwarded
to the server.

> Is beconn total across all backends for a particular listen?

no, beconn is for the backend which processes the request, regardless
of the frontend which brings it there.

> I'm not
> sure, because the docs say "the backend" implying just one specific
> backend server (in my example log entry "dp2").  But the docs later
> state "includes the total number of concurrent connections active on
> servers",

yes, on this backend's servers, since servers belong to a backend.

> implying it's across all the backend servers for a specific
> listen statement. beconn includes both the number of active
> connections to all (or one) backend server(s) plus all the requests
> "backed-up" in haproxy that haven't yet been sent to the backend
> servers, right?

yes, that's it.

> srvconn is only the number of actual active connections for a single
> specific backend server (again in this case "dp2")?

yes.

If you only had one server, one backend, one frontend and one process,
you'd have srvconn <= beconn <= feconn <= actconn.

This is still normally the case as long as the frontend and backend
are dedicated and there is no crossed traffic between multiple frontends
and multiple backends.

Hoping this clarifies the behaviour a bit more,
Willy


Reply via email to