mirror of
https://github.com/apache/httpd.git
synced 2025-05-17 15:21:13 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87062 13f79535-47bb-0310-9956-ffa450edef68
106 lines
4.0 KiB
HTML
106 lines
4.0 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>Apache MPM mpmt_pthread</TITLE>
|
|
</HEAD>
|
|
|
|
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
|
|
<BODY
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#000080"
|
|
ALINK="#FF0000"
|
|
>
|
|
<!--#include virtual="header.html" -->
|
|
|
|
<H1 ALIGN="CENTER">Multi-Processing Module mpmt_pthread</H1>
|
|
<P>
|
|
This Multi-Processing Module implements a hybrid multi-threaded
|
|
multi-process web server.
|
|
</P>
|
|
|
|
<P><A
|
|
HREF="module-dict.html#Status"
|
|
REL="Help"
|
|
><STRONG>Status:</STRONG></A> MPM
|
|
<BR>
|
|
<A
|
|
HREF="module-dict.html#SourceFile"
|
|
REL="Help"
|
|
><STRONG>Source File:</STRONG></A> mpmt_pthread.c
|
|
<BR>
|
|
<A
|
|
HREF="module-dict.html#ModuleIdentifier"
|
|
REL="Help"
|
|
><STRONG>Module Identifier:</STRONG></A> mpm_mpmt_pthread_module
|
|
</P>
|
|
|
|
<H2>Summary</H2>
|
|
|
|
<p>This Multi-Processing Module (MPM) is the default for most unix-like
|
|
operating systems. It implements a hybrid
|
|
multi-process multi-threaded server. Each process has a fixed number
|
|
of threads. The server adjusts to handle load by increasing or
|
|
decreasing the number of processes.</p>
|
|
|
|
<p>A single control process is responsible for launching child
|
|
processes. Each child process creates a fixed number of threads as
|
|
specified in the <code>ThreadsPerChild</code> directive.
|
|
The individual threads then listen for connections and
|
|
serve them when they arrive.</p>
|
|
|
|
<p>Apache always tries to maintain a pool of <em>spare</em> 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
|
|
<code>MinSpareThreads</code> and <code>MaxSpareThreads</code>.
|
|
Since this process is very self-regulating, it is rarely necessary to
|
|
modify these directives from their default values. The maximum
|
|
number of clients that may be served simultaneously is determined
|
|
by multiplying the maximum number of server processes that
|
|
will be created (<code>MaxClients</code>) by the number of threads
|
|
created in each process (<code>ThreadsPerChild</code>).</p>
|
|
|
|
<p>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 <code>User</code> and
|
|
<code>Group</code> 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 <a
|
|
href="../suexec.html">suexec</a> is used, these directives also set
|
|
the privileges which will be inherited by CGI scripts.</p>
|
|
|
|
<p><code>MaxRequestsPerChild</code> controls how frequently the server
|
|
recycles processes by killing old ones and launching new ones.</p>
|
|
|
|
<p>See also: <a href="../bind.html">Setting which addresses and ports
|
|
Apache uses</a>.</p>
|
|
|
|
|
|
<H2>Directives</H2>
|
|
<UL>
|
|
<li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li>
|
|
<li><a href="mpm_common.html#group">Group</a></li>
|
|
<li><a href="mpm_common.html#pidfile">PidFile</a></li>
|
|
<li><a href="mpm_common.html#listen">Listen</a></li>
|
|
<li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li>
|
|
<li><a href="mpm_common.html#lockfile">LockFile</a></li>
|
|
<li><a href="mpm_common.html#maxclients">MaxClients</a></li>
|
|
<li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li>
|
|
<li><a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li>
|
|
<li><a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li>
|
|
<li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li>
|
|
<li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li>
|
|
<li><a href="mpm_common.html#startservers">StartServers</a></li>
|
|
<li><a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li>
|
|
<li><a href="mpm_common.html#user">User</a></li>
|
|
</UL>
|
|
|
|
<!--#include virtual="footer.html" -->
|
|
</BODY>
|
|
</HTML>
|