/ Zope / Apsis / Pound Mailing List / Archive / 2005 / 2005-03 / Pound vs. PLB

[ << ] [ >> ]

[ Pound vs. PLB / Tomas Kolda ... ] [ Re: logging / Robert Segall ... ]

Pound vs. PLB
Tomas Kolda <kolda(at)lss.fd.cvut.cz>
2005-03-01 14:23:07 [ SNIP ]
Hi all,

I'm searching for the best load balancer. I found Pound and it looks 
great, but I thing it has high overhead, because of thread model. I use 
flood tool from Apache Group and get static content at 1418req/s without 
any balancer (at my localhost 2.6.9, Apache 1.3.). With Pound it is only 
466req/s (I think it is create thread overhead). PLB makes 1438req/s.

But PLB doesn't have session support, that I need. 

My questions:
Is it possible to speedup current version of Pound with using modified 
kernel or threading library?

Is there any patch that use event library or asynchronous processing?

Thanks a lot
Tomas Kolda



Re: Pound vs. PLB
Seán Gabriel <gabriel(at)korsoft.com>
2005-03-01 22:32:33 [ SNIP ]
On Tue, 2005-03-01 at 06:04, Tomas Kolda wrote:
> I'm searching for the best load balancer. I found Pound and it looks 
> great, but I thing it has high overhead, because of thread model. I use 
> flood tool from Apache Group and get static content at 1418req/s without 
> any balancer (at my localhost 2.6.9, Apache 1.3.). With Pound it is only 
> 466req/s (I think it is create thread overhead). PLB makes 1438req/s.

You're running Linux, right?  (I assume 2.6.9 is your kernel version.) 
Check to see if you're using the NPTL theading library or the older,
slower LinuxThreads by running the command "getconf
GNU_LIBPTHREAD_VERSION".  If you're running NPTL then thread creation
overhead probably isn't the problem (NPTL creates threads *extremely*
fast, from what I understand).

-- 
Sean Gabriel Heacock
Telana Internet Services
http://www.telana.com/


Re: Pound vs. PLB
Tomas Kolda <kolda(at)lss.fd.cvut.cz>
2005-03-02 20:18:11 [ SNIP ]
Thanks, that was nice tip, but there is not much speedup. I recompiled 
glibc to support nptl and now your command outputs : NTPL 2.3.4.

I wrote my bechmark code, because flood and ab gives strange numbers. So 
my bench use one process with select.

Here is numbers for 5 concurent connections and 1000 static files:
Only apache (time ./netbench -c 1000 -n 5 -u / -p 80 > /dev/null):
real    0m1.232s
user    0m0.007s
sys     0m0.080s

PLB (time ./netbench -c 1000 -n 5 -u / -p 8887 > /dev/null):
real    0m1.405s
user    0m0.008s
sys     0m0.075s

Pound (time ./netbench -c 1000 -n 5 -u / -p 8888 > /dev/null):
real    0m2.246s
user    0m0.028s
sys     0m0.091s

I also tried two computers each makes with Pound around 500req/s. If I 
wrote them both in config, then it makes only 600req/s.


Seán Gabriel wrote:

>On Tue, 2005-03-01 at 06:04, Tomas Kolda wrote:
>  
>
>>I'm searching for the best load balancer. I found Pound and it looks 
>>great, but I thing it has high overhead, because of thread model. I use 
>>flood tool from Apache Group and get static content at 1418req/s without 
>>any balancer (at my localhost 2.6.9, Apache 1.3.). With Pound it is only 
>>466req/s (I think it is create thread overhead). PLB makes 1438req/s.
>>    
>>
>
>You're running Linux, right?  (I assume 2.6.9 is your kernel version.) 
>Check to see if you're using the NPTL theading library or the older,
>slower LinuxThreads by running the command "getconf
>GNU_LIBPTHREAD_VERSION".  If you're running NPTL then thread creation
>overhead probably isn't the problem (NPTL creates threads *extremely*
>fast, from what I understand).
>
>  
>


Re: Pound vs. PLB
Sascha Ottolski <sascha.ottolski(at)gallileus.de>
2005-03-03 09:44:28 [ SNIP ]
Am Mittwoch, 2. März 2005 20:18 schrieben Sie:
> I also tried two computers each makes with Pound around 500req/s. If I
> wrote them both in config, then it makes only 600req/s.

just curious, do you have pound running on a seperate machine, or on one of 
the two backends?

Cheers, Sascha

Re: Pound vs. PLB
Tomas Kolda <kolda(at)lss.fd.cvut.cz>
2005-03-03 11:10:18 [ SNIP ]
Yes, pound is on one of my test backends. I expect that reverse proxy 
will have much less overhead. Maybe I'm doing something wrong, but...

Finaly I want to have something like mod_backhand with wackamole, but 
with completely free tools. Because backhand has bad licence. So many 
backends connected to gateway and connected each other on private 
network. If any of backend that owns the main IP for www.example.com 
dies, then next backend set his external IP to www.example.com. 
Something like wackamole.

Have you some idea how to make high available SQL (mysql). How can I 
replicate data (online) on all of my backend? Or do you have one SQL 
server for all backends? What to do if this one server fails?

At this time I'm trying to rewrite Pound to C++ (using stl) with 
libevent. If anyone did that before, please contact me.

Thanks
Tomas

Sascha Ottolski wrote:

>Am Mittwoch, 2. März 2005 20:18 schrieben Sie:
>  
>
>>I also tried two computers each makes with Pound around 500req/s. If I
>>wrote them both in config, then it makes only 600req/s.
>>    
>>
>
>just curious, do you have pound running on a seperate machine, or on one of 
>the two backends?
>
>Cheers, Sascha
>  
>


Re: Pound vs. PLB
Sascha Ottolski <sascha.ottolski(at)gallileus.de>
2005-03-03 11:36:35 [ SNIP ]
Am Donnerstag, 3. März 2005 11:10 schrieb Tomas Kolda:
> Yes, pound is on one of my test backends. I expect that reverse proxy
> will have much less overhead. Maybe I'm doing something wrong, but...

that might cause the relatively small gain with two backends: I've experienced 
that a slow backend slows down the whole cluster, even if other backends are 
much faster. on the backend that has to run pound in parallel the two might 
be competing on resources. how to the numbers look if you have only one 
backend, but that one proxied by a pound on a different machine, possibly 
running your benchmark program on a third machine?

another idea might be to fiddle with the priorities for the backends, so that 
the slower backend gets less traffic.

Cheers, Sascha

Re: Pound vs. PLB
Maciej Bogucki <maciej.bogucki(at)artegence.com>
2005-03-03 11:38:56 [ SNIP ]
> Have you some idea how to make high available SQL (mysql). How can I 
> replicate data (online) on all of my backend? Or do you have one SQL 
> server for all backends? What to do if this one server fails?

There are several ways to make a mysql cluster:
http://www.mysql.com/products/cluster/

If You use php: http://sqlrelay.sourceforge.net/
If You use java: http://c-jdbc.objectweb.org/

Two webserver setup: 
http://dev.mysql.com/tech-resources/articles/mysql-cluster-for-two-servers.html

Basic MySQL Cluster Concepts:
http://dev.mysql.com/doc/mysql/en/mysql-cluster-basics.html

MySQL Cluster Overview:
http://dev.mysql.com/doc/mysql/en/mysql-cluster-overview.html

Or You can use database with recovery capabilities:
http://www.drbd.org/

We hava always found that seperating services out to different machines
works better than running multiple services on each machine!

Best Regards
Maciej Bogucki

MailBoxer