The TCP/IP Stack

The TCP/IP stack also imposes scalability limitations. How many simultaneous open TCP connections can your front-end servers handle, and how many open connections can be handled by the back-end components supporting them? Each layer in your software stack communicates with the layer below via TCP: load balancer -> cache server -> application server -> database/file system. There need to be sufficient connection handles available at each level to prevent bottlenecks occurring.

Each connection made to the load balancer results in a corresponding request to a cache server, so you need sufficient connection handles here to handle whatever maximum number of simultaneous requests you have decided upon. The cache servers should respond directly to a large number of requests, so you will need a much smaller number of connection handles between the cache servers and the application servers. Similarly, some requests will be responded to directly by the application server, so an even smaller number of connection handles is required for communication between the application server and the database/file system.

In order for your installation to perform well, the relationships between the number of connection handles available at each level in your server architecture must reflect the actual requirements of the traffic reaching your site.