Apache, Configuring
(→MPM) |
|||
Line 10: | Line 10: | ||
## Server-Pool Size Regulation (MPM specific) | ## Server-Pool Size Regulation (MPM specific) | ||
## | ## | ||
+ | |||
+ | ===Prefork=== | ||
+ | |||
+ | This is the default MPM and will work fine for most applications. | ||
+ | |||
+ | Default: | ||
+ | # prefork MPM | ||
+ | # StartServers: number of server processes to start | ||
+ | # MinSpareServers: minimum number of server processes which are kept spare | ||
+ | # MaxSpareServers: maximum number of server processes which are kept spare | ||
+ | # MaxClients: maximum number of server processes allowed to start | ||
+ | # MaxRequestsPerChild: maximum number of requests a server process serves | ||
+ | <IfModule prefork.c> | ||
+ | StartServers 5 | ||
+ | MinSpareServers 5 | ||
+ | MaxSpareServers 10 | ||
+ | MaxClients 150 | ||
+ | MaxRequestsPerChild 0 | ||
+ | </IfModule> | ||
+ | |||
+ | Tweaked: | ||
+ | StartServers 10 | ||
+ | MinSpareServers 10 | ||
+ | MaxSpareServers 20 | ||
+ | MaxClients 250 | ||
+ | MaxRequestsPerChild 15000 | ||
+ | |||
+ | StartServers, | ||
+ | Creating a child process can be one of the most expensive in terms of CPU usage. With a busy website you may start reaching the default MaxClients, in which case everyone else is locked out. This error will show up in your error logs. | ||
+ | |||
+ | ===Worker=== | ||
+ | |||
+ | In order to try out the worker MPM, you must re-install Apache2 with different MAKE_ARGS. For the brave, please see this page: [[Apache2 with the Worker MPM]]. | ||
==KeepAlives== | ==KeepAlives== |
Revision as of 07:54, 20 October 2005
Contents |
Apache 2 Configuration
If you've got a busy webserver, you'll soon find yourself looking at tweaking the Apache configuration to get more. As it is, most Apache installs are configured for testing / development vs production use.
MPM
By default, the httpd.conf has MPM specific settings for all possible MPM choices. However, since this choice is made at compile-time, all but one of these MPM specific can be safely removed. The default (and usually the recommended) MPM is prefork.
## ## Server-Pool Size Regulation (MPM specific) ##
Prefork
This is the default MPM and will work fine for most applications.
Default:
# prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule>
Tweaked:
StartServers 10 MinSpareServers 10 MaxSpareServers 20 MaxClients 250 MaxRequestsPerChild 15000
StartServers, Creating a child process can be one of the most expensive in terms of CPU usage. With a busy website you may start reaching the default MaxClients, in which case everyone else is locked out. This error will show up in your error logs.
Worker
In order to try out the worker MPM, you must re-install Apache2 with different MAKE_ARGS. For the brave, please see this page: Apache2 with the Worker MPM.
KeepAlives
The KeepAlives directive is enabled by default; to quote from the Apache documentation:
The Keep-Alive extension to HTTP/1.0 and the persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions which allow multiple requests to be sent over the same TCP connection. In some cases this has been shown to result in an almost 50% speedup in latency times for HTML documents with many images.
Which is a good thing, if you want fast pages and have a strong server to handle it. If you're more concerned with availability than speed, or are running Apache on a less-than-stellar machine, you may get better performance (cpu/processor-wise, at least,) by turning KeepAlives off:
Default:
KeepAlives On
Tweaked:
KeepAlives Off