From: Joshua Slive This Multi-Processing Module (MPM) implements a hybrid
- multi-process multi-threaded server. Each process has a fixed
+ multi-process multi-threaded server. By using threads to serve
+ requests, it is able to serve a large number of requests with
+ less system resources than a process-based server. Yet it
+ retains much of the stability of a process-based server by
+ keeping multiple processes available, each with many threads. The most important directives used to control this MPM are
+ Each process has a fixed
number of threads. The server adjusts to handle load by
increasing or decreasing the number of processes. A single control process is responsible for launching child
- processes. Each child process creates a fixed number of threads
- as specified in the ThreadsPerChild
directive. The
- individual threads then listen for connections and serve them
- when they arrive.
Apache always tries to maintain a pool of spare or
idle server threads, which stand ready to serve incoming
requests. In this way, clients do not need to wait for a new
threads or processes to be created before their requests can be
served. Apache assesses the total number of idle threads in all
- processes, and forks or kills processes to keep this number
- within the boundaries specified by MinSpareThreads
- and MaxSpareThreads
. Since this process is very
- self-regulating, it is rarely necessary to modify these
- directives from their default values. The maximum number of
+ processes, and forks or kills processes to keep this number within
+ the boundaries specified by MaxClients
) by the number of threads
- created in each process (ThreadsPerChild
).
While the parent process is usually started as root under
- Unix in order to bind to port 80, the child processes and
- threads are launched by Apache as a less-privileged user. The
- User
and Group
directives are used to
- set the privileges of the Apache child processes. The child
- processes must be able to read all the content that will be
- served, but should have as few privileges beyond that as
- possible. In addition, unless suexec is used, these directives also
- set the privileges which will be inherited by CGI scripts.
MaxRequestsPerChild
controls how frequently the
- server recycles processes by killing old ones and launching new
- ones.
While the parent process is usually started as root under Unix
+ in order to bind to port 80, the child processes and threads are
+ launched by Apache as a less-privileged user. The
See also: Setting which addresses and - ports Apache uses.
- +