Hi Willy,

Thanks for your time.

I really didn't know this are such low results.

I ran 'ab' from a different machine than haproxy and nginx (which are
different machines too). I also tried to run 'ab' from multiple machines
(not haproxy or nginx) and the results are pretty much / 3 the single
result 'ab' result...

I'm using VPS machines from Linode.com, they are quite powerful. They're
based on Xen. I don't see the network card saturated.

As for nf_conntrack, I have iptables enabled with rules as a firewall on
each machine, I stopped it on all involved machines and I still get those
results. nf_conntrack is compiled to the kernel (it's a kernel provided by
Linode) so I don't think I can disable it completely. Just not use it (and
not use any firewall between them).

Even if 6-7K is very low (for nginx directly), why is haproxy doing half
than that?


about nginx static backend maxconn - what is a high maxconn number? Just
the limit I can see with 'ab'?

Thanks,
Bar.
On Sun, Apr 29, 2012 at 4:27 PM, Willy Tarreau <[email protected]> wrote:

> Hi Bar,
>
> On Sun, Apr 29, 2012 at 02:09:42PM +0300, Bar Ziony wrote:
> > Hi,
> >
> > I have 2 questions about a haproxy setup I configured.
> >
> > This is the setup:
> > LB server (haproxy 1.4.20, debian squeeze 64-bit) in http mode,
> forwarding
> > requests to a single nginx web server, that resides on a different
> machine.
> > I'll paste the haproxy config at the end of this message.
> >
> > 1. Benchmarking:
> > When doing some benchmarking with 'ab' or 'siege', for a small (2 bytes,
> > single char) file:
> >
> >     ab -n 10000 -c 40 http://lb/test.html
> >     VS
> >     ab -n 10000 -c 40 http://web-01/test.html
> >
> > web-01 directly gets 6000-6500 requests/sec. haproxy->nginx gets 3000
> > requests/sec.
>
> This is extremely low, it's approximately what I achieve on a sub-1watt
> 500 MHz Geode LX, and I guess you're running on much larger hardware
> since you're saying it's 64-bit.
>
> > When using ab -k to enable keepalives, nginx is getting >12,000
> > requests/sec, and haproxy gets around 6000-7000 requests/sec.
>
> Even this is very low. Note that the 6-7k here relates to what nginx
> support above without keep-alive so it might make sense, but all these
> numbers seem very low in general.
>
> > I wanted to ask if the x2 difference is normal? I tried to remove the ACL
> > for checking if the path ends with PHP, the results were not different.
>
> Is "ab" running on the same machine as haproxy ? Do you have nf_conntrack
> loaded on any of the systems ? Do you observe any process reaching 100%
> CPU somewhere ? Aren't you injecting on a 100 Mbps NIC ?
>
> > 2. As you can see, I separate the dynamic (PHP) requests from other
> > (static) requests.
> >     a. Is this the way to do it (path_end .php) ?
>
> It looks fine. Other people like to store all their statics in a small
> set of directories and use path_beg with these prefixes instead. But it
> depends on how you classify your URLs in fact.
>
> >     b. I limit the number of connections to the dynamic backend
> server(s).
> > I just set it according to the number of FastCGI PHP processes available
> on
> > that machine. How do I check/benchmark what is the limit for the static
> > backend? Or is it not needed?
>
> Nginx performs quite well in general and specially as a static file server.
> You may well set a high maxconn or none at all on the static backend, you
> won't harm it.
>
> Otherwise I found nothing suspect in your config.
>
> Regards,
> Willy
>
>

Reply via email to