Re: Rails app with maxconn 1 receiving more than 1 request at a time

From: Willy Tarreau <>
Date: Sun, 14 Sep 2008 11:58:07 +0200

Hi Alexander,

On Sat, Sep 13, 2008 at 04:15:14PM +0200, Alexander Staubo wrote:
> On Sat, Sep 13, 2008 at 7:35 AM, Willy Tarreau <> wrote:
> > Huh! this is totally unexpected ! In fact, you could see more session when
> > looking on the server than you see on haproxy if the server times out and
> > takes time to close a socket. But here it is haproxy which sees more sockets
> > than it allows itself. Clearly that's a bug.
> We are seeing it, too. I never paid much attention to it since it does
> not happen consistently, but it may explain the occasional timeout we
> are experiencing.

This is possible. I'm not surprized that you all are essentially mongrel users, because it is the component which makes queuing bugs the most visible. I'll look at your config too. Right now, it seems like all configs are about the sames, with maxconn 1. All captures are very useful too, because I see a few retries and errors, so I'll try to create the same conditions here.

> > What I find strange is that none of you has had requests queued on servers.
> > Maybe you never have any persistence cookie, which explains that requests
> > are only queued at the backend.
> Another oddity is how the backend sums don't correspond to the
> individual backend columns. Is this by design?
> 10 * 0 should not be 109. Does this mean that the backend group as a
> whole is queueing connections because of the maxconn setting?

It is not the sum, it is the backend's queue. In fact, there's an oddity in the way stats are reported. The "backend" line reports both backendspecific  stats and servers sums, which is confusing. I was planning on separating this into two lines, one for the backend, another one for the sum. Not done yet :-)

In fact, I would say that only the columns starting at "conn errors" are sums. The Queue stats are really distinct between backend and servers. The sessions columns should be close to the sum (with the difference induced by backend-queuing and errors). The reported number of bytes transferred by the backend should also be close to the sum (again, the difference is caused by error messages and unprocessed requests).

Hoping this clarifies the analysis a bit, Willy Received on 2008/09/14 11:58

This archive was generated by hypermail 2.2.0 : 2008/09/14 12:00 CEST