]> granicus.if.org Git - apache/blob - docs/manual/mod/worker.xml
Update the stylesheet reference to the new language-specific version.
[apache] / docs / manual / mod / worker.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
4 <modulesynopsis>
5 <name>worker</name>
6 <description>Multi-Processing Module implementing a hybrid
7     multi-threaded multi-process web server</description>
8 <status>MPM</status>
9 <sourcefile>worker.c</sourcefile>
10 <identifier>mpm_worker_module</identifier>
11
12 <summary>
13     <p>This Multi-Processing Module (MPM) implements a hybrid
14     multi-process multi-threaded server. Each process has a fixed
15     number of threads. The server adjusts to handle load by
16     increasing or decreasing the number of processes.</p>
17
18     <p>A single control process is responsible for launching child
19     processes. Each child process creates a fixed number of threads
20     as specified in the <code>ThreadsPerChild</code> directive. The
21     individual threads then listen for connections and serve them
22     when they arrive.</p>
23
24     <p>Apache always tries to maintain a pool of <em>spare</em> or
25     idle server threads, which stand ready to serve incoming
26     requests. In this way, clients do not need to wait for a new
27     threads or processes to be created before their requests can be
28     served. Apache assesses the total number of idle threads in all
29     processes, and forks or kills processes to keep this number
30     within the boundaries specified by <code>MinSpareThreads</code>
31     and <code>MaxSpareThreads</code>. Since this process is very
32     self-regulating, it is rarely necessary to modify these
33     directives from their default values. The maximum number of
34     clients that may be served simultaneously is determined by
35     multiplying the maximum number of server processes that will be
36     created (<code>MaxClients</code>) by the number of threads
37     created in each process (<code>ThreadsPerChild</code>).</p>
38
39     <p>While the parent process is usually started as root under
40     Unix in order to bind to port 80, the child processes and
41     threads are launched by Apache as a less-privileged user. The
42     <code>User</code> and <code>Group</code> directives are used to
43     set the privileges of the Apache child processes. The child
44     processes must be able to read all the content that will be
45     served, but should have as few privileges beyond that as
46     possible. In addition, unless <a
47     href="../suexec.html">suexec</a> is used, these directives also
48     set the privileges which will be inherited by CGI scripts.</p>
49
50     <p><code>MaxRequestsPerChild</code> controls how frequently the
51     server recycles processes by killing old ones and launching new
52     ones.</p>
53
54     <p>See also: <a href="../bind.html">Setting which addresses and
55     ports Apache uses</a>.</p>
56 </summary>
57
58 <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
59 </directivesynopsis>
60 <directivesynopsis location="mpm_common"><name>Group</name>
61 </directivesynopsis>
62 <directivesynopsis location="mpm_common"><name>PidFile</name>
63 </directivesynopsis>
64 <directivesynopsis location="mpm_common"><name>Listen</name>
65 </directivesynopsis>
66 <directivesynopsis location="mpm_common"><name>ListenBacklog</name>
67 </directivesynopsis>
68 <directivesynopsis location="mpm_common"><name>LockFile</name>
69 </directivesynopsis>
70 <directivesynopsis location="mpm_common"><name>MaxClients</name>
71 </directivesynopsis>
72 <directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
73 </directivesynopsis>
74 <directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
75 </directivesynopsis>
76 <directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
77 </directivesynopsis>
78 <directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
79 </directivesynopsis>
80 <directivesynopsis location="mpm_common"><name>SendBufferSize</name>
81 </directivesynopsis>
82 <directivesynopsis location="mpm_common"><name>ServerLimit</name>
83 </directivesynopsis>
84 <directivesynopsis location="mpm_common"><name>StartServers</name>
85 </directivesynopsis>
86 <directivesynopsis location="mpm_common"><name>ThreadLimit</name>
87 </directivesynopsis>
88 <directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
89 </directivesynopsis>
90 <directivesynopsis location="mpm_common"><name>User</name>
91 </directivesynopsis>
92
93 </modulesynopsis>