~ubuntu-branches/ubuntu/feisty/apache2/feisty

« back to all changes in this revision

Viewing changes to docs/manual/mod/worker.html.en

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Barth
  • Date: 2006-12-09 21:05:45 UTC
  • mfrom: (0.6.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20061209210545-h70s0xaqc2v8vqr2
Tags: 2.2.3-3.2
* Non-maintainer upload.
* 043_ajp_connection_reuse: Patch from upstream Bugzilla, fixing a critical
  issue with regard to connection reuse in mod_proxy_ajp.
  Closes: #396265

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="ISO-8859-1"?>
 
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
3
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
 
4
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
5
              This file is generated from xml source: DO NOT EDIT
 
6
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
7
      -->
 
8
<title>worker - Apache HTTP Server</title>
 
9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
 
10
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
 
11
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
 
12
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
 
13
<body>
 
14
<div id="page-header">
 
15
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
 
16
<p class="apache">Apache HTTP Server Version 2.2</p>
 
17
<img alt="" src="../images/feather.gif" /></div>
 
18
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
 
19
<div id="path">
 
20
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.2</a> &gt; <a href="./">Modules</a></div>
 
21
<div id="page-content">
 
22
<div id="preamble"><h1>Apache MPM worker</h1>
 
23
<div class="toplang">
 
24
<p><span>Available Languages: </span><a href="../de/mod/worker.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
 
25
<a href="../en/mod/worker.html" title="English">&nbsp;en&nbsp;</a> |
 
26
<a href="../ja/mod/worker.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
 
27
</div>
 
28
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Multi-Processing Module implementing a hybrid
 
29
    multi-threaded multi-process web server</td></tr>
 
30
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr>
 
31
<tr><th><a href="module-dict.html#ModuleIdentifier">Module�Identifier:</a></th><td>mpm_worker_module</td></tr>
 
32
<tr><th><a href="module-dict.html#SourceFile">Source�File:</a></th><td>worker.c</td></tr></table>
 
33
<h3>Summary</h3>
 
34
 
 
35
    <p>This Multi-Processing Module (MPM) implements a hybrid
 
36
    multi-process multi-threaded server. By using threads to serve
 
37
    requests, it is able to serve a large number of requests with
 
38
    fewer system resources than a process-based server. However, it
 
39
    retains much of the stability of a process-based server by
 
40
    keeping multiple processes available, each with many threads.</p>
 
41
 
 
42
    <p>The most important directives used to control this MPM are
 
43
    <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>, which
 
44
    controls the number of threads deployed by each child process and
 
45
    <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code>, which
 
46
    controls the maximum total number of threads that may be
 
47
    launched.</p>
 
48
</div>
 
49
<div id="quickview"><h3 class="directives">Directives</h3>
 
50
<ul id="toc">
 
51
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#acceptmutex">AcceptMutex</a></li>
 
52
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
 
53
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#enableexceptionhook">EnableExceptionHook</a></li>
 
54
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#group">Group</a></li>
 
55
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li>
 
56
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
 
57
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#lockfile">LockFile</a></li>
 
58
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxclients">MaxClients</a></li>
 
59
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li>
 
60
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
 
61
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
 
62
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
 
63
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li>
 
64
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li>
 
65
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
 
66
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
 
67
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#serverlimit">ServerLimit</a></li>
 
68
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startservers">StartServers</a></li>
 
69
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadlimit">ThreadLimit</a></li>
 
70
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li>
 
71
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadstacksize">ThreadStackSize</a></li>
 
72
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#user">User</a></li>
 
73
</ul>
 
74
<h3>Topics</h3>
 
75
<ul id="topics">
 
76
<li><img alt="" src="../images/down.gif" /> <a href="#how-it-works">How it Works</a></li>
 
77
</ul><h3>See also</h3>
 
78
<ul class="seealso">
 
79
<li><a href="../bind.html">Setting which addresses and ports Apache
 
80
uses</a></li>
 
81
</ul></div>
 
82
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 
83
<div class="section">
 
84
<h2><a name="how-it-works" id="how-it-works">How it Works</a></h2>
 
85
    <p>A single control process (the parent) is responsible for launching 
 
86
    child processes. Each child process creates a fixed number of server
 
87
    threads as specified in the <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> directive, as well
 
88
    as a listener thread which listens for connections and passes them
 
89
    to a server thread for processing when they arrive.</p>
 
90
 
 
91
    <p>Apache always tries to maintain a pool of <dfn>spare</dfn> or
 
92
    idle server threads, which stand ready to serve incoming
 
93
    requests. In this way, clients do not need to wait for a new
 
94
    threads or processes to be created before their requests can be
 
95
    served. The number of processes that will initially launched is
 
96
    set by the <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>
 
97
    directive. During operation, Apache assesses the total number
 
98
    of idle threads in all processes, and forks or kills processes to
 
99
    keep this number within the boundaries specified by <code class="directive"><a href="../mod/mpm_common.html#minsparethreads">MinSpareThreads</a></code> and <code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code>. Since this
 
100
    process is very self-regulating, it is rarely necessary to modify
 
101
    these directives from their default values. The maximum number of
 
102
    clients that may be served simultaneously (i.e., the maximum total
 
103
    number of threads in all processes) is determined by the
 
104
    <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> directive.
 
105
    The maximum number of active child processes is determined by
 
106
    the <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code>
 
107
    directive divided by the <code class="directive"><a href="../mod/mpm_common.html#&#10;    threadsperchild">
 
108
    ThreadsPerChild</a></code> directive.</p>
 
109
 
 
110
    <p>Two directives set hard limits on the number of active child
 
111
    processes and the number of server threads in a child process,
 
112
    and can only be changed by fully stopping the server and then 
 
113
    starting it again.  <code class="directive"><a href="../mod/mpm_common.html#serverlimit&#10;    ">ServerLimit
 
114
    </a></code> is a hard limit on the number of active child 
 
115
    processes, and must be greater than or equal to the 
 
116
    <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code>
 
117
    directive divided by the <code class="directive"><a href="../mod/mpm_common.html#&#10;    threadsperchild">
 
118
    ThreadsPerChild</a></code> directive.  
 
119
    <code class="directive"><a href="../mod/mpm_common.html#threadlimit">ThreadLimit</a></code> is a hard
 
120
    limit of the number of server threads, and must be greater than
 
121
    or equal to the <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> directive.  If 
 
122
    non-default values are specified for these directives, they 
 
123
    should appear before other <code class="module"><a href="../mod/worker.html">worker</a></code> directives.</p>
 
124
 
 
125
    <p>In addition to the set of active child processes, there may 
 
126
    be additional child processes which are terminating, but where at
 
127
    least one server thread is still handling an existing client
 
128
    connection.  Up to <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> terminating processes 
 
129
    may be present, though the actual number can be expected to be 
 
130
    much smaller.  This behavior can be avoided by disabling the 
 
131
    termination of individual child processes, which is achieved using
 
132
    the following:</p>
 
133
 
 
134
    <ul>
 
135
      <li>set the value of <code class="directive"><a href="../mod/mpm_common.html#&#10;      maxrequestsperchild">
 
136
      MaxRequestsPerChild</a></code> to zero</li>
 
137
 
 
138
      <li>set the value of <code class="directive"><a href="../mod/mpm_common.html#&#10;      maxsparethreads">
 
139
      MaxSpareThreads</a></code> to the same value as
 
140
      <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code></li>
 
141
    </ul>
 
142
 
 
143
    <p>A typical configuration of the process-thread controls in
 
144
    the <code class="module"><a href="../mod/worker.html">worker</a></code> MPM could look as follows:</p>
 
145
 
 
146
    <div class="example"><p><code>
 
147
      ServerLimit         16<br />
 
148
      StartServers         2<br />
 
149
      MaxClients         150<br />
 
150
      MinSpareThreads     25<br />
 
151
      MaxSpareThreads     75<br />
 
152
      ThreadsPerChild     25
 
153
    </code></p></div>
 
154
 
 
155
    <p>While the parent process is usually started as <code>root</code>
 
156
    under Unix in order to bind to port 80, the child processes and threads
 
157
    are launched by Apache as a less-privileged user. The <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> and <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code> directives are used to set
 
158
    the privileges of the Apache child processes. The child processes
 
159
    must be able to read all the content that will be served, but
 
160
    should have as few privileges beyond that as possible. In
 
161
    addition, unless <code class="program"><a href="../programs/suexec.html">suexec</a></code> is used,
 
162
    these directives also set the privileges which will be inherited
 
163
    by CGI scripts.</p>
 
164
 
 
165
    <p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>
 
166
    controls how frequently the server recycles processes by killing
 
167
    old ones and launching new ones.</p>
 
168
</div>
 
169
</div>
 
170
<div class="bottomlang">
 
171
<p><span>Available Languages: </span><a href="../de/mod/worker.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
 
172
<a href="../en/mod/worker.html" title="English">&nbsp;en&nbsp;</a> |
 
173
<a href="../ja/mod/worker.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a></p>
 
174
</div><div id="footer">
 
175
<p class="apache">Copyright 2006 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 
176
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
 
177
</body></html>
 
 
b'\\ No newline at end of file'