From 8de86d6c176445517cbbb4b25691229a2d10ca55 Mon Sep 17 00:00:00 2001
From: Rich Bowen The single biggest hardware issue affecting webserver
performance is RAM. A webserver should never ever have to swap,
- swapping increases the latency of each request beyond a point
+ as swapping increases the latency of each request beyond a point
that users consider "fast enough". This causes users to hit
stop and reload, further increasing the load. You can, and
should, control the top
, and divide this into your total available memory,
+ leaving some room for other processes.
Beyond that the rest is mundane: get a fast enough CPU, a
fast enough network card, and fast enough disks, where "fast
@@ -105,21 +109,34 @@
- Prior to Apache 1.3, It is recommended that you do this sort of postprocessing of
+ your log files on some machine other than the production web
+ server machine, in order that this activity not adversely affect
+ server performance.On
.
This adds latency to every request because it requires a
DNS lookup to complete before the request is finished. In
- Apache 1.3 this setting defaults to Off
.
- However (1.3 or later), if you use any Allow from domain
- or Deny from domain
directives then you will pay for
+ Apache 1.3 this setting defaults to Off
. If you need
+ to have addresses in your log files resolved to hostnames, use the
+ logresolve
+ program that comes with Apache, on one of the numerous log
+ reporting packages which are available.
or
+ directives (i.e., using a hostname, or a domain name, rather than
+ an IP address) then you will pay for
a double reverse DNS lookup (a reverse, followed by a forward
- to make sure that the reverse is not being spoofed). So for the
- highest performance avoid using these directives (it's fine to
- use IP addresses rather than domain names).
Note that it's possible to scope the directives, such as
within a <Location /server-status>
section.
@@ -140,19 +157,9 @@
could consider doing the gethostbyname
call in the
specific CGIs that need it.
Similarly, if you need to have hostname information in your
- server logs in order to generate reports of this information,
- you can postprocess your log file with logresolve
,
- so that these lookups can be done without making the client wait.
- It is recommended that you do this postprocessing, and any other
- statistical analysis of the log file, somewhere other than your
- production web server machine, in order that this activity does
- not adversely affect server performance.
If your site needs content negotiation consider using
+ type-map
files, rather than the Options
+ MultiViews
directive to accomplish the negotiation. See the
+ Content Negotiation
+ documentation for a full discussion of the methods of negotiation,
+ and instructions for creating type-map
files.
Since memory usage is such an important consideration in
+ performance, you should attempt to eliminate modules that youare
+ not actually using. If you have built the modules as DSOs, eliminating modules is a simple
+ matter of commenting out the associated
If, on the other hand, you have modules statically linked + into your Apache binary, you will need to recompile Apache in + order to remove unwanted modules.
+ +An associated question that arises here is, of course, what
+ modules you need, and which ones you don't. The answer here
+ will, of course, vary from one web site to another. However, the
+ minimal list of modules which you can get by with tends
+ to include mod_log_config
is,
+ of course, optional, as you can run a web site without log
+ files. This is, however, not recommended.