Title: Apache and scalability

Hi Everyone,

I have a question about Apache and scalability. We're running Apache 1.3.23/mod_ssl/mod_gzip on a pair of Solaris machines at the moment. The tie to Linux is that we have a pilot program that runs the same Apache config on a pair of Red Hat machines, but for now, we're stuck with the E-250's.

The Great Planners have decreed that we need to be able to handle 250 (WebSphere application) page changes per second. Speaking just of the web server tier, here are my thoughts:

- The maximum time for any transaction (clicking "GO" --> end of browser rendering) should be less than 5 seconds, give or take. Let's assume the worst: every page will take 5 seconds.

Let's assume we turn OFF session persistence, so as soon as any Apache child is finished with its request, it will be free to handle another from a different user.

Taking the worse case, every transaction will take 5 seconds to complete. That means Apache children will be bound to one particular user for 5 seconds for every request, unable to handle other requests. Note: the browser doesn't close the HTTP session with the web server until after it renders the page - we saw that with a previous application that uses a lot of formatting with .css.

From there, we draw a time line, starting at 0, with 1 second increments.

Time index 0: 250 users click "Submit" all at the same tim-e. Since browsers all use 2 connections to the web server, that's 500 Apache children, all bound for 5 seconds.

Time index 1: 250 more requests. Total bound children: 1000.
Time index 2: 250 more requests. Total bound children: 1500.
Time index 3: 250 more requests. Total bound children: 2000.
Time index 4: 250 more requests. Total bound children: 2500.
Time index 5: The 250 children from time index 0 are released, and handle the 250 new requests.

It looks to me like if we need to scale to 2500 Apache children, and each web server can produce 256, then we need 10 web servers.

Am I totally off base?




Reply via email to