Understanding stress conditions of a haproxy setups

From: Mariano Cortesi <mcortesi#gmail.com>
Date: Mon, 6 Apr 2009 15:50:13 -0300


I'm trying to optimize my haproxy and servers configuration, but I'm having problem when I want to understand what's failing or limiting the configuration.

I'm using autobench with httperf to generate up to 3000 to 5000 request/second; I have a machine with haproxy, and two others with a nginx server each. And I have 3 computers using httperf to stress the application, all synchronized by autobench.

My problem is that autobench reports that it could only achieve up to 2200 requests/second, when I requested 3000 or 4000. So I look for dropped connections, or failed requests in haproxy log and I don't find any.

I already checked my test setup, so I check that each httperf client is able to substain a 2000 request/second, and I have 3 machines with httperf, so reaching that level shouldn't be a problem for them.

I have the tcplog option activated, and the termination_state of the log is always '--' so, no problems there.

I don't know where to look, so, I was wondering if anyone could tip me on what to look, and where to look for the reason that's limiting the request/second.

Thanks in advance!

PD: here's the haproxy.conf


        maxconn 32000
        ulimit-n 65536
        log localhost user

#nbproc 2 # Number of processing cores. Dual Dual-core Opteron
is 4 cores for example. user haproxy group haproxy stats socket /tmp/haproxy-socket chroot /var/chroot/haproxy pidfile /var/run/haproxy-private.pid defaults mode tcp log global option tcplog clitimeout 60000 srvtimeout 30000 contimeout 4000
#option httpclose # Disable Keepalive
listen bind balance roundrobin # Load Balancing algorithm server server1 weight 1 maxconn 2040 check server server1 weight 1 maxconn 2040 check
Received on 2009/04/06 20:50

This archive was generated by hypermail 2.2.0 : 2009/04/06 21:00 CEST