LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Fundamental performance limits of a linux based load balancer / server s

To: <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Fundamental performance limits of a linux based load balancer / server system?
From: "Edward Chee" <edward_chee@xxxxxxxxx>
Date: Tue, 11 May 2004 02:04:31 -0700
Hi there

I'm new to LVS and have been learning much about loadbalancers recently. 

Been trying to figure out the fundamental performance hotspots in buildling a 
load balanced farm of linux servers that can pust 1Gbps of traffic. 

I was wondering if those of you who are experienced might be able to check my 
deductions:

======================
(1) Load balancer bottlenecks
======================

Assuming enough CPU+RAM is available, there are hard linux system limits 

(a) max open connections is limited to the number of available ports 
(65535-1024 divided by TIME_WAIT). For systems with TIME_WAIT set to 
recommended 4 minutes, this limits max open connections to measly 268. 
See http://support.zeus.com/doc/zlb/sizing_guide.pdf

(b) An open connection requires a file descriptor. Therefore, the max # of open 
connections depends on the linux system wide limit for file descriptors. 
See http://support.zeus.com/faq/zlb/v1/entries/os/linuxfd.html. 

The Zeus website claims to have linearly scalable performance simply by adding 
more lateral balancers. However, they don't explicitly come out and say what 
(a) and (b) imply about their product performance limits. 

I'm trying to figure out realistic limits on the max number of open connections 
as well as # connections per second a linux based balancer can sustain. 

If anyone has any experience tweaking OS params, I'd be very grateful to learn 
from you. 

======================
(2) Server bottlenecks
======================

Assume GB NICs are in use so that the NICs are no the bottleneck. 
Assume also that "enough" CPU and RAM are used.
Assume all data is cached in memory so disks are not hit. 

Even if all these were met, it would seem that 1 of these 2 bottlenecks would 
be hit:-

(a) Linux max open connections due to available ports or file descriptors on 
the web server. 
-- We can address these just as in case #1 for the load balancer

(b) CPU overhead due to TCP processing for 1GB.
- This seems to be the only real advantage web io accelerators offered by 
Netscaler and Redline Networks have. They aggregate multiple client HTTP 1.0 
connections into a single HTTP 1.1 persistent pipelined connection to a 
webserver. This dramatically reduces the number of open connections requirement 
on the web server -- it also effectively multiplies the max number of open 
connections your webserver can handle due to OS limits.

Secondly, it eliminates a large percentage of TCP connection setup/breakdown 
overhead since the connections are persistent. This buys you efficiency and CPU 
cycles.

See http://theboost.net/modem/accelerators.htm for more info. Netscaler and 
Redline seem to go for between 30K and 90K.

So the natural question is : are there any linux based open source products 
that possess this HTTP connection aggregation feature? 
I've been trying to figure out if Squid reverse proxy does this but the 
documentation is hard to filter through. 
Has anyone tried implementing this for LVS?

Thanks a lot
ed
<Prev in Thread] Current Thread [Next in Thread>