httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Hartill <r...@imdb.com>
Subject Efficient RAM and CPU Resource Utilization (fwd)
Date Thu, 19 Sep 1996 00:18:22 GMT

FYI,

----- Forwarded message from Stan Osborne -----

Sender: stan@conxion.com
Message-ID: <324075D6.5687@conxion.com>
Date: Wed, 18 Sep 1996 15:21:10 -0700
From: Stan Osborne <stan@conxion.com>
Organization: ConXioN Corporation
X-Mailer: Mozilla 3.0 (X11; I; SunOS 5.5 sun4m)
MIME-Version: 1.0
To: editors@apacheweek.com
CC: apache-bugs@apache.org
Subject: Efficient RAM and CPU Resource Utilization
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This is a request for one or more articles about topics
I have not seen discussed in your publication.

What, if anything, is being done in the Apache community to improve
the use of RAM and CPU resources by the server, especially for extreamly
busy sites?

As the internet grows the measurement of webserver performance
must be better defined.   Besides the need for a well defined common
understanding, the measurement values that are considered "high" are
increasing.  What used to be a level for a "busy" site is now much
higher than six months ago.

Apache Server's internal limit is defined as an array.  This is a limit
on the number of child processes.

  httpd.h:#define HARD_SERVER_LIMIT 150
  http_main.c:static short_score scoreboard_image[HARD_SERVER_LIMIT];

The hard limit value is used to build an array.  If you increase the
value of this array, more child server processes are permitted.
The server configuration directive "MaxClients" allows the administrator
to use less than all of the HARD_SERVER_LIMIT.  It is not possible to
exceed the MAX_SERVER_LIMIT with the configuration directive.  The limit
is complied into the server program.

ConXioN has web hosting customers using servers based on Apache, CERN,
WebSite,
and Microsoft IIS.   With Microsoft IIS it is possible to increase the
maximum
simultaneous service requests dynamically.   We have some IIS sites
that we have allowed to grow to 4,000 simultaneous client connections.
These IIS sites often hover in the 1,000 - 2,000 simultaneous Client
connections 24 hours a day.

Apache source currently ships with "HARD_SERVER_LIMIT" set to 150. 
There
is no mention in the documentation of this compilied in limit.  You find
it
by looking through the source code. Even when the source code is
modified,
the amount of RAM used by each forked child server process is excessive.

With IIS we can support 4,000 simultaneous client connections using
128MB
of system RAM.  With Apache we can support only 500 simultaneous client
connections using 128MB of system RAM.  This makes IIS 8 times more
effiecient
in its use of RAM.  It also means we need at least 1GB of RAM to support
4,000
connections using Apache.

Besides being RAM efficient, IIS is also CPU efficient.  IIS uses
"threading"
to manage internel concurrency.   Apache "forks" child processes to
create
concurrent server processes.   There is much research in the Operating
System
area of Computer Science explaining why "threads" are more efficient
than
"forked" child processes.

We expect that within a year our servers will need to support 40,000
simultaneous client connections.  We would like to be able to do this
using Apache with only 1 GB of RAM.   While we think our requirements
are a bit unusual, we are certain there will be lots of sites during the
next year that will need 1,000 - 4,000 simultaneious client connections.

What, if anything, is being done in the Apache community to improve
the use of RAM and CPU resources by the server, especially for extreamly
busy sites?

Stan Osborne          Direct:    408 283 8490
stan@conxion.com      General:   800 CON XION
ConXioN Corporation   http://www.conxion.com/
San Jose, California  FAX:       408 291 0579

----- End of forwarded message from Stan Osborne -----


Mime
View raw message