]> granicus.if.org Git - apache/commitdiff
First attempt at MPM documentation. Feedback appreciated. Discussion
authorJoshua Slive <slive@apache.org>
Fri, 17 Nov 2000 19:29:59 +0000 (19:29 +0000)
committerJoshua Slive <slive@apache.org>
Fri, 17 Nov 2000 19:29:59 +0000 (19:29 +0000)
to follow on apache-docs.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86997 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/STATUS
docs/manual/mod/core.html
docs/manual/mod/directives.html
docs/manual/mod/index.html
docs/manual/mod/mpmt_pthread.html [new file with mode: 0644]

index 1c51832c2b468413a4401f2e4e87c727e7880e67..bc32e1b5cf6bacb23dc3f8d5d4bd655481dd817e 100644 (file)
@@ -13,6 +13,8 @@ apache-docs-subscribe@apache.org
                 on the operation of each MPM.  There is also some info in
                 htdocs/manual/mpm.html that will need to be cleaned up,
                 linked up, and updated.
+                Joshua <slive@finance.commerce.ubc.ca> has committed
+                an intitial version of mpmt_pthread for discussion.
 
 - Merging of changes in 1.3.
    - There have been many changes in the 1.3 docs which haven't
index 7119f4dd3f0b441bf3c5fba5b10d0d548f626775..e222e38d9ffc94054016c766248eb350f6ca04a4 100644 (file)
@@ -59,16 +59,10 @@ always available.
 <LI><A HREF="#listenbacklog">ListenBacklog</A>
 <LI><A HREF="#location">&lt;Location&gt;</A>
 <LI><A HREF="#locationmatch">&lt;LocationMatch&gt;</A>
-<LI><A HREF="#lockfile">LockFile</A>
 <LI><A HREF="#loglevel">LogLevel</A>
-<LI><A HREF="#maxclients">MaxClients</A>
 <LI><A HREF="#maxkeepaliverequests">MaxKeepAliveRequests</A>
-<LI><A HREF="#maxrequestsperchild">MaxRequestsPerChild</A>
-<LI><A HREF="#maxspareservers">MaxSpareServers</A>
-<LI><A HREF="#minspareservers">MinSpareServers</A>
 <LI><A HREF="#namevirtualhost">NameVirtualHost</A>
 <LI><A HREF="#options">Options</A>
-<LI><A HREF="#pidfile">PidFile</A>
 <LI><A HREF="#port">Port</A>
 <LI><A HREF="#require">Require</A>
 <LI><A HREF="#resourceconfig">ResourceConfig</A>
@@ -76,7 +70,6 @@ always available.
 <LI><A HREF="#rlimitmem">RLimitMEM</A>
 <LI><A HREF="#rlimitnproc">RLimitNPROC</A>
 <LI><A HREF="#satisfy">Satisfy</A>
-<LI><A HREF="#scoreboardfile">ScoreBoardFile</A>
 <LI><A HREF="#scriptinterpretersource">ScriptInterpreterSource</A>
 <LI><A HREF="#sendbuffersize">SendBufferSize</A>
 <LI><A HREF="#serveradmin">ServerAdmin</A>
@@ -87,8 +80,6 @@ always available.
 <LI><A HREF="#serversignature">ServerSignature</A>
 <LI><A HREF="#servertokens">ServerTokens</A>
 <LI><A HREF="#servertype">ServerType</A>
-<LI><A HREF="#startservers">StartServers</A>
-<LI><A HREF="#threadsperchild">ThreadsPerChild</A>
 <LI><A HREF="#threadstacksize">ThreadStackSize</A>
 <LI><A HREF="#timeout">TimeOut</A>
 <LI><A HREF="#usecanonicalname">UseCanonicalName</A>
@@ -517,36 +508,6 @@ CGI scripts, and byte range responses do not have this header.
 
 <HR>
 
-<H2><A NAME="coredumpdirectory">CoreDumpDirectory directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt CoreDumpDirectory} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> CoreDumpDirectory <EM>directory</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> the same location as ServerRoot<BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Removed in version 2.0<P>
-
-This controls the directory to which Apache attempts to switch before
-dumping core.  The default is in the <A HREF="#serverroot">ServerRoot</A>
-directory, however since this should not be writable by the user
-the server runs as, core dumps won't normally get written.  If you
-want a core dump for debugging, you can use this directive to place
-it in a different location.<P><HR>
-
 <H2><A NAME="defaulttype">DefaultType directive</A></H2>
 <!--%plaintext &lt;?INDEX {\tt DefaultType} directive&gt; -->
 <A
@@ -1875,45 +1836,6 @@ different sections are combined when a request is received
 
 <HR>
 
-<H2><A NAME="lockfile">LockFile directive</A></H2>
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> LockFile <EM>filename</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>LockFile logs/accept.lock</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Moved in version 2.0 to the
-<A HREF="../mpm.html">MPMs</A>.<P>
-
-The LockFile directive sets the path to the lockfile used when
-Apache is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
-USE_FLOCK_SERIALIZED_ACCEPT.  This directive should normally be
-left at its default value.  The main reason for changing it is if
-the <CODE>logs</CODE> directory is NFS mounted, since <STRONG>the lockfile
-must be stored on a local disk</STRONG>.  The PID of the main
-server process is automatically appended to the filename. <P>
-
-<STRONG>SECURITY:</STRONG> It is best to avoid putting this file in a 
-world writable directory such as <CODE>/var/tmp</CODE> because someone 
-could create a denial of service attack and prevent the server from
-starting by creating a lockfile with the same name as the one the 
-server will try to create.<P>
-
-<P><HR>
-
 <H2><A NAME="loglevel">LogLevel directive</A></H2>
 <A
  HREF="directive-dict.html#Syntax"
@@ -1981,42 +1903,6 @@ of higher significance will be reported as well.  <EM>E.g.</EM>, when
 Using a level of at least <CODE>crit</CODE> is recommended.
 <P><HR>
 
-<H2><A NAME="maxclients">MaxClients directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt MaxClients} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> MaxClients <EM>number</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>MaxClients 256</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Moved in version 2.0 to the
-<A HREF="../mpm.html">MPMs</A>.<P>
-
-<P>The MaxClients directive sets the limit on the number of simultaneous
-requests that can be supported; not more than this number of child server
-processes will be created.  To configure more than 256 clients, you must
-edit the HARD_SERVER_LIMIT entry in httpd.h and recompile.
-
-<P>Any connection attempts over the MaxClients limit will normally
-be queued, up to a number based on the <A HREF="#listenbacklog">
-ListenBacklog</A> directive.  Once a child process is freed at the
-end of a different request, the connection will then be serviced.
-
-<HR>
-
 <H2><A NAME="maxkeepaliverequests">MaxKeepAliveRequests directive</A></H2>
 <A
  HREF="directive-dict.html#Syntax"
@@ -2046,130 +1932,6 @@ on. If it is set to "<CODE>0</CODE>", unlimited requests will be
 allowed. We recommend that this setting be kept to a high value for
 maximum server performance.</P><HR>
 
-<H2><A NAME="maxrequestsperchild">MaxRequestsPerChild directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt MaxRequestsPerChild} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> MaxRequestsPerChild <EM>number</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>MaxRequestsPerChild 0</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Moved in version 2.0 to the
-<A HREF="../mpm.html">MPMs</A>.<P>
-
-The MaxRequestsPerChild directive sets the limit on the number of requests
-that an individual child server process will handle. After MaxRequestsPerChild
-requests, the child process will die. If MaxRequestsPerChild is 0, then
-the process will never expire.<P>
-
-Setting MaxRequestsPerChild to a non-zero limit has two beneficial effects:
-<UL>
-<LI>it limits the amount of memory that process can consume by (accidental)
-memory leakage;
-<LI> by giving processes a finite lifetime, it helps reduce the
-number of processes when the server load reduces.
-</UL>
-
-<P>This directive has no effect on Win32.
-
-<P><STRONG>NOTE:</STRONG> For <EM>KeepAlive</EM> requests, only the first
-request is counted towards this limit. In effect, it changes the
-behavior to limit the number of <EM>connections</EM> per child.
-
-<P><HR>
-
-<H2><A NAME="maxspareservers">MaxSpareServers directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt MaxSpareServers} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> MaxSpareServers <EM>number</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>MaxSpareServers 10</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Moved in version 2.0 to the
-<A HREF="../mpm.html">MPMs</A>.<P>
-
-The MaxSpareServers directive sets the desired maximum number of <EM>idle</EM>
-child server processes. An idle process is one which is not handling
-a request. If there are more than MaxSpareServers idle, then the parent
-process will kill off the excess processes.<P>
-
-Tuning of this parameter should only be necessary on very busy sites.
-Setting this parameter to a large number is almost always a bad idea.<P>
-
-This directive has no effect when used with the Apache Web server on a
-Microsoft Windows platform.
-
-<P>
-
-See also <A HREF="#minspareservers">MinSpareServers</A> and
-<A HREF="#startservers">StartServers</A>.<P><HR>
-
-<H2><A NAME="minspareservers">MinSpareServers directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt MinSpareServers} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> MinSpareServers <EM>number</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>MinSpareServers 5</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Moved in version 2.0 to the
-<A HREF="../mpm.html">MPMs</A>.<P>
-
-The MinSpareServers directive sets the desired minimum number of <EM>idle</EM>
-child server processes. An idle process is one which is not handling
-a request. If there are fewer than MinSpareServers idle, then the parent
-process creates new children at a maximum rate of 1 per second.<P>
-
-Tuning of this parameter should only be necessary on very busy sites.
-Setting this parameter to a large number is almost always a bad idea.<P>
-
-This directive has no effect on Microsoft Windows.
-
-<P>
-
-See also <A HREF="#maxspareservers">MaxSpareServers</A> and
-<A HREF="#startservers">StartServers</A>.<P><HR>
-
 <H2><A NAME="namevirtualhost">NameVirtualHost directive</A></H2>
 <!--%plaintext &lt;?INDEX {\tt NameVirtualHost} directive&gt; -->
 <A
@@ -2337,43 +2099,7 @@ disables server-side includes completely regardless of the previous setting.<P>
 The default in the absence of any other settings is <CODE>All</CODE>.<P>
 <HR>
 
-<H2><A NAME="pidfile">PidFile directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt PidFile} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> PidFile <EM>filename</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>PidFile logs/httpd.pid</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Removed in version 2.0.<P>
-
-The PidFile directive sets the file to which the server records the
-process id of the daemon. If the filename does not begin with a slash (/)
-then it is assumed to be relative to the <A HREF="#serverroot">ServerRoot</A>.
-The PidFile is only used in <A HREF="#servertype">standalone</A> mode.<P>
 
-It is often useful to be able to send the server a signal, so that it closes
-and then reopens its <A HREF="#errorlog">ErrorLog</A> and TransferLog, and
-re-reads its configuration files. This is done by sending a SIGHUP (kill -1)
-signal to the process id listed in the PidFile.<P>
-
-The PidFile is subject to the same warnings about log file placement and
-<A HREF="../misc/security_tips.html#serverroot">security</A>.
-
-<P><HR>
 
 <H2><A NAME="port">Port directive</A></H2>
 <!--%plaintext &lt;?INDEX {\tt Port} directive&gt; -->
@@ -2715,63 +2441,6 @@ See also <A HREF="#require">Require</A> and
 
 <P><HR>
 
-<H2><A NAME="scoreboardfile">ScoreBoardFile directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt ScoreBoardFile} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> ScoreBoardFile <EM>filename</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>ScoreBoardFile logs/apache_status</CODE>
-<BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Moved in version 2.0 to the
-<A HREF="../mpm.html">MPMs</A>.<P>
-
-The ScoreBoardFile directive is required on some architectures to place
-a file that the server will use to communicate between its children and
-the parent.  The easiest way to find out if your architecture requires
-a scoreboard file is to run Apache and see if it creates the file named
-by the directive.  If your architecture requires it then you must ensure
-that this file is not used at the same time by more than one invocation
-of Apache.<P>
-
-If you have to use a ScoreBoardFile then you may see improved speed by
-placing it on a RAM disk.  But be careful that you heed the same warnings
-about log file placement and
-<A HREF="../misc/security_tips.html">security</A>.<P>
-
-Apache 1.2 and above:<P>
-
-Linux 1.x users might be able to add
-<CODE>-DHAVE_SHMGET -DUSE_SHMGET_SCOREBOARD</CODE> to
-the <CODE>EXTRA_CFLAGS</CODE> in your <CODE>Configuration</CODE>.  This
-might work with some 1.x installations, but won't work with all of
-them. (Prior to 1.3b4, <CODE>HAVE_SHMGET</CODE> would have sufficed.)<P>
-
-SVR4 users should consider adding
-<CODE>-DHAVE_SHMGET -DUSE_SHMGET_SCOREBOARD</CODE> to the
-<CODE>EXTRA_CFLAGS</CODE> in your <CODE>Configuration</CODE>.  This
-is believed to work, but we were unable to test it in time for 1.2
-release. (Prior to 1.3b4, <CODE>HAVE_SHMGET</CODE> would have sufficed.)<P>
-
-<STRONG>See Also</STRONG>:
-<A HREF="../stopping.html">Stopping and Restarting Apache</A></P>
-
-<P><HR>
-
 <H2><A NAME="scriptinterpretersource">ScriptInterpreterSource directive</A></H2>
 <!--%plaintext &lt;?INDEX {\tt ScriptInterpreterSource} directive&gt; -->
 <A
@@ -3119,78 +2788,6 @@ subsequent connections. If you intend running Apache to serve a busy site,
 standalone will probably be your only option.<P>
 <HR>
 
-<H2><A NAME="startservers">StartServers directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt StartServers} directive&gt; -->
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> StartServers <EM>number</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>StartServers 5</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> Moved in version 2.0 to the
-<A HREF="../mpm.html">MPMs</A>.<P>
-
-The StartServers directive sets the number of child server processes created
-on startup. As the number of processes is dynamically controlled depending
-on the load, there is usually little reason to adjust this parameter.<P>
-
-<P>When running under Microsoft Windows, this directive has no effect.
-   There is always one child which handles all requests. Within the
-   child requests are handled by separate threads. The
-   <A HREF="#threadsperchild">ThreadsPerChild</A> directive controls 
-   the maximum number of child threads handling requests, which will
-   have a similar effect to the setting of <SAMP>StartServers</SAMP>
-   on Unix.
-
-<P>
-
-See also <A HREF="#minspareservers">MinSpareServers</A> and
-<A HREF="#maxspareservers">MaxSpareServers</A>.<P><HR>
-
-<H2><A NAME="threadsperchild">ThreadsPerChild</A></H2>
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> ThreadsPerChild <EM>number</EM><BR>
-<A
- HREF="directive-dict.html#Default"
- REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>ThreadsPerChild 50</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config<BR>
-<A
- HREF="directive-dict.html#Status"
- REL="Help"
-><STRONG>Status:</STRONG></A> core (Windows, NetWare)<BR>
-<STRONG>Compatibility:</STRONG> Available only with Apache 1.3 and later
-with Windows. Moved in version 2.0 to the <A HREF="../mpm.html">MPMs</A>.
-
-<P>This directive tells the server how many threads it should use. This
-   is the maximum number of connections the server can handle at once; be
-   sure and set this number high enough for your site if you get a lot of
-   hits.
-
-<P>This directive has no effect on Unix systems.  Unix users should look
-   at <A HREF="#startservers">StartServers</A> and <A
-   HREF="#maxrequestsperchild">MaxRequestsPerChild</A>.</P>
-
-<HR>
-
 <H2><A NAME="threadstacksize">ThreadStackSize</A></H2>
 <A
  HREF="directive-dict.html#Syntax"
index c133f35e5b6dc085f5bce27508af587c58c28985..cd56461b4e1b1d60a84a5768a6d7ce0b93f29feb 100644 (file)
@@ -91,7 +91,7 @@ of the terms used in their descriptions available.
 <LI><A HREF="mod_cookies.html#cookielog">CookieLog</A> (mod_cookies)
 <LI><A HREF="mod_log_config.html#cookielog">CookieLog</A> (mod_log_config)
 <LI><A HREF="mod_usertrack.html#cookietracking">CookieTracking</A>
-<LI><A HREF="core.html#coredumpdirectory">CoreDumpDirectory</A>
+<LI><A HREF="mpmt_pthread.html#coredumpdirectory">CoreDumpDirectory</A>
 <LI><A HREF="mod_log_config.html#customlog">CustomLog</A>
 <LI><A HREF="mod_dav.html#dav">Dav</A>
 <LI><A HREF="mod_dav.html#davdepthinfinity">DavDepthInfinity</A>
@@ -152,25 +152,25 @@ of the terms used in their descriptions available.
 <LI><A HREF="mod_so.html#loadmodule">LoadModule</A>
 <LI><A HREF="core.html#location">&lt;Location&gt;</A>
 <LI><A HREF="core.html#locationmatch">&lt;LocationMatch&gt;</A>
-<LI><A HREF="core.html#lockfile">LockFile</A>
+<LI><A HREF="mpmt_pthread.html#lockfile">LockFile</A>
 <LI><A HREF="mod_log_config.html#logformat">LogFormat</A>
 <LI><A HREF="core.html#loglevel">LogLevel</A>
-<LI><A HREF="core.html#maxclients">MaxClients</A>
+<LI><A HREF="mpmt_pthread.html#maxclients">MaxClients</A>
 <LI><A HREF="core.html#maxkeepaliverequests">MaxKeepAliveRequests</A>
-<LI><A HREF="core.html#maxrequestsperchild">MaxRequestsPerChild</A>
-<LI><A HREF="core.html#maxspareservers">MaxSpareServers</A>
+<LI><A HREF="mpmt_pthread.html#maxrequestsperchild">MaxRequestsPerChild</A>
+<LI><A HREF="mpmt_pthread.html#maxsparethreads">MaxSpareThreads</A>
 <LI><A HREF="mod_cern_meta.html#metadir">MetaDir</A>
 <LI><A HREF="mod_cern_meta.html#metafiles">MetaFiles</A>
 <LI><A HREF="mod_cern_meta.html#metasuffix">MetaSuffix</A>
 <LI><A HREF="mod_mime_magic.html#mimemagicfile">MimeMagicFile</A>
-<LI><A HREF="core.html#minspareservers">MinSpareServers</A>
+<LI><A HREF="mpmt_pthread.html#minsparethreads">MinSpareThreads</A>
 <LI><A HREF="mod_mmap_static.html#mmapfile">MMapFile</A>
 <LI><A HREF="core.html#namevirtualhost">NameVirtualHost</A>
 <LI><A HREF="mod_proxy.html#nocache">NoCache</A>
 <LI><A HREF="core.html#options">Options</A>
 <LI><A HREF="mod_access.html#order">Order</A>
 <LI><A HREF="mod_env.html#passenv">PassEnv</A>
-<LI><A HREF="core.html#pidfile">PidFile</A>
+<LI><A HREF="mpmt_pthread.html#pidfile">PidFile</A>
 <LI><A HREF="core.html#port">Port</A>
 <LI><A HREF="mod_proxy.html#proxyblock">ProxyBlock</A>
 <LI><A HREF="mod_proxy.html#proxydomain">ProxyDomain</A>
@@ -203,7 +203,7 @@ of the terms used in their descriptions available.
 <LI><A HREF="core.html#rlimitmem">RLimitMEM</A>
 <LI><A HREF="core.html#rlimitnproc">RLimitNPROC</A>
 <LI><A HREF="core.html#satisfy">Satisfy</A>
-<LI><A HREF="core.html#scoreboardfile">ScoreBoardFile</A>
+<LI><A HREF="mpmt_pthread.html#scoreboardfile">ScoreBoardFile</A>
 <LI><A HREF="mod_actions.html#script">Script</A>
 <LI><A HREF="mod_alias.html#scriptalias">ScriptAlias</A>
 <LI><A HREF="mod_alias.html#scriptaliasmatch">ScriptAliasMatch</A>
@@ -224,8 +224,8 @@ of the terms used in their descriptions available.
 <LI><A HREF="mod_setenvif.html#setenvif">SetEnvIf</A>
 <LI><A HREF="mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</A>
 <LI><A HREF="mod_mime.html#sethandler">SetHandler</A>
-<LI><A HREF="core.html#startservers">StartServers</A>
-<LI><A HREF="core.html#threadsperchild">ThreadsPerChild</A>
+<LI><A HREF="mpmt_pthread.html#startservers">StartServers</A>
+<LI><A HREF="mpmt_pthread.html#threadsperchild">ThreadsPerChild</A>
 <LI><A HREF="core.html#timeout">TimeOut</A>
 <LI><A HREF="mod_log_config.html#transferlog">TransferLog</A>
 <LI><A HREF="mod_mime.html#typesconfig">TypesConfig</A>
index 2e831bdac9e4aecd01bce549f3819b23da6d0079..81f79d7d75b25054110cf3dec5d00398ba6ac16b 100644 (file)
@@ -24,9 +24,19 @@ directives</A>.
 
 </P>
 
+<h2>Core Features and Multi-Processing Modules</h2>
+
 <DL>
 <DT><A HREF="core.html">Core</A>
 <DD>Core Apache features.
+<DT><A HREF="mpmt_pthread.html">mpmt_pthread</A>
+<DD>Multi-Processing Model with Threading via Pthreads; Variable number
+of processes, constant number of threads/child
+</DL>
+
+<h2>Other Modules</h2>
+
+<DL>
 <DT><A HREF="mod_access.html">mod_access</A>
 <DD>Access control based on client hostname or IP address.
 <DT><A HREF="mod_actions.html">mod_actions</A>
diff --git a/docs/manual/mod/mpmt_pthread.html b/docs/manual/mod/mpmt_pthread.html
new file mode 100644 (file)
index 0000000..da3e824
--- /dev/null
@@ -0,0 +1,434 @@
+<!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">Mulit-Processing Module mpmt_pthread</H1>
+<P>
+This Multi-Processing Module controls process and thread creation
+using the pthread interface.
+</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 uses pthread system calls to create 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>
+
+
+<H2>Directives</H2>
+<UL>
+<li><a href="#coredumpdirectory">CoreDumpDirectory</a></li>
+<li><a href="#pidfile">PidFile</a></li>
+<li><a href="#lockfile">LockFile</a></li>
+<li><a href="#maxclients">MaxClients</a></li>
+<li><a href="#maxrequestsperchild">MaxRequestsPerChild</a></li>
+<li><a href="#maxsparethreads">MaxSpareThreads</a></li>
+<li><a href="#minsparethreads">MinSpareThreads</a></li>
+<li><a href="#scoreboardfile">ScoreBoardFile</a></li>
+<li><a href="#startservers">StartServers</a></li>
+<li><a href="#threadsperchild">ThreadsPerChild</a></li>
+</UL>
+<HR>
+
+<H2><A NAME="coredumpdirectory">CoreDumpDirectory directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt CoreDumpDirectory} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> CoreDumpDirectory <EM>directory</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> the same location as ServerRoot<BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<p>This controls the directory to which Apache attempts to switch
+before dumping core.  The default is in the <A
+HREF="core.html#serverroot">ServerRoot</A> directory, however since
+this should not be writable by the user the server runs as, core dumps
+won't normally get written.  If you want a core dump for debugging,
+you can use this directive to place it in a different location.<P><HR>
+
+<H2><A NAME="pidfile">PidFile directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt PidFile} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> PidFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>PidFile logs/httpd.pid</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<p>The PidFile directive sets the file to which the server records the
+process id of the daemon. If the filename does not begin with a slash
+(/) then it is assumed to be relative to the <A
+HREF="core.html#serverroot">ServerRoot</A>.</p>
+
+<p>It is often useful to be able to send the server a signal, so that
+it closes and then reopens its <A
+HREF="core.html#errorlog">ErrorLog</A> and TransferLog, and re-reads
+its configuration files. This is done by sending a SIGHUP (kill -1)
+signal to the process id listed in the PidFile.</p>
+
+<p>The PidFile is subject to the same warnings about log file placement and
+<A HREF="../misc/security_tips.html#serverroot">security</A>.</p>
+
+
+<P><HR>
+
+
+<H2><A NAME="lockfile">LockFile directive</A></H2>
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> LockFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>LockFile logs/accept.lock</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<p>The LockFile directive sets the path to the lockfile used when
+Apache is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+USE_FLOCK_SERIALIZED_ACCEPT.  This directive should normally be
+left at its default value.  The main reason for changing it is if
+the <CODE>logs</CODE> directory is NFS mounted, since <STRONG>the lockfile
+must be stored on a local disk</STRONG>.  The PID of the main
+server process is automatically appended to the filename. <P>
+
+<p><STRONG>SECURITY:</STRONG> It is best to avoid putting this file in a 
+world writable directory such as <CODE>/var/tmp</CODE> because someone 
+could create a denial of service attack and prevent the server from
+starting by creating a lockfile with the same name as the one the 
+server will try to create.</p>
+
+<hr>
+
+<H2><A NAME="maxclients">MaxClients directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt MaxClients} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> MaxClients <EM>number</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>MaxClients 8</code> (with threads)
+<code>MaxClients 256</code> (no threads)<BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> core<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<P>The MaxClients directive sets the limit on the number of child
+processes that will be created to serve requests.  When the server is
+built without threading, no more than this number of clients can be
+served simultaneously.  To configure more than 256 clients, you must
+edit the <code>HARD_SERVER_LIMIT</code> entry in
+<code>mpm_default.h</code> and recompile.
+
+<P>Any connection attempts over the MaxClients limit will normally
+be queued, up to a number based on the <A HREF="#listenbacklog">
+ListenBacklog</A> directive.  Once a child process is freed at the
+end of a different request, the connection will then be serviced.</p>
+
+<p>When the server is compiled with threading, then the maximum number
+of simultaneous requests that can be served is obtained from the value
+of this directive multiplied by <a
+href="#threadsperchild">ThreadsPerChild</a>.</p>
+
+<HR>
+
+<H2><A NAME="maxrequestsperchild">MaxRequestsPerChild directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt MaxRequestsPerChild} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> MaxRequestsPerChild <EM>number</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>MaxRequestsPerChild 10000</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> core<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<p>The MaxRequestsPerChild directive sets the limit on the number of requests
+that an individual child server process will handle. After MaxRequestsPerChild
+requests, the child process will die. If MaxRequestsPerChild is 0, then
+the process will never expire.<P>
+
+Setting MaxRequestsPerChild to a non-zero limit has two beneficial effects:
+<UL>
+<LI>it limits the amount of memory that process can consume by (accidental)
+memory leakage;
+<LI> by giving processes a finite lifetime, it helps reduce the
+number of processes when the server load reduces.
+</UL>
+
+<P><STRONG>NOTE:</STRONG> For <EM>KeepAlive</EM> requests, only the first
+request is counted towards this limit. In effect, it changes the
+behavior to limit the number of <EM>connections</EM> per child.
+
+<P><HR>
+
+
+<H2><A NAME="maxsparethreads">MaxSpareThreads directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt MaxSpareServers} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> MaxSpareThreads <EM>number</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>MaxSpareThreads ??</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> core<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<P>Content needed here!</p>
+
+<p>See also <A HREF="#minsparethreads">MinSpareThreads</A> and
+<A HREF="#startservers">StartServers</A>.
+
+<P><HR>
+
+<H2><A NAME="minsparethreads">MinSpareThreads directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt MinSpareServers} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> MinSpareServers <EM>number</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>MinSpareServers ???</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> core<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<p><strong>fix me</strong></p>
+
+<p>The MinSpareServers directive sets the desired minimum number of <EM>idle</EM>
+child server processes. An idle process is one which is not handling
+a request. If there are fewer than MinSpareServers idle, then the parent
+process creates new children at a maximum rate of 1 per second.<P>
+
+Tuning of this parameter should only be necessary on very busy sites.
+Setting this parameter to a large number is almost always a bad idea.<P>
+
+This directive has no effect on Microsoft Windows.
+
+<P>
+
+See also <A HREF="#maxsparethreads">MaxSpareThreads</A> and
+<A HREF="#startservers">StartServers</A>.<P><HR>
+
+
+<H2><A NAME="scoreboardfile">ScoreBoardFile directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt ScoreBoardFile} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ScoreBoardFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>ScoreBoardFile logs/apache_status</CODE>
+<BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<p>The ScoreBoardFile directive is required on some architectures to place
+a file that the server will use to communicate between its children and
+the parent.  The easiest way to find out if your architecture requires
+a scoreboard file is to run Apache and see if it creates the file named
+by the directive.  If your architecture requires it then you must ensure
+that this file is not used at the same time by more than one invocation
+of Apache.</p>
+
+<p>If you have to use a ScoreBoardFile then you may see improved speed by
+placing it on a RAM disk.  But be careful that you heed the same warnings
+about log file placement and
+<A HREF="../misc/security_tips.html">security</A>.</p>
+
+<p><STRONG>See Also</STRONG>:
+<A HREF="../stopping.html">Stopping and Restarting Apache</A></P>
+
+
+<P><HR>
+
+<H2><A NAME="startservers">StartServers directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt StartServers} directive&gt; -->
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> StartServers <EM>number</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>StartServers 5</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> core<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<p>The StartServers directive sets the number of child server processes created
+on startup. As the number of processes is dynamically controlled depending
+on the load, there is usually little reason to adjust this parameter.</P>
+
+<P>See also <A HREF="#minsparethreads">MinSpareThreads</A> and
+<A HREF="#maxsparethreads">MaxSpareThreads</A>.<P><HR>
+
+<H2><A NAME="threadsperchild">ThreadsPerChild</A></H2>
+<p><A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ThreadsPerChild <EM>number</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>ThreadsPerChild 50</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mpmt_pthread</p>
+
+<P>This directive sets the number of threads created by each child
+process.</p>
+
+
+<!--#include virtual="footer.html" -->
+</BODY>
+</HTML>