]> granicus.if.org Git - apache/commitdiff
add initial documentation for beos, leader, mpmt_os2 and threadpool
authorAndre Malo <nd@apache.org>
Sun, 22 Dec 2002 22:20:52 +0000 (22:20 +0000)
committerAndre Malo <nd@apache.org>
Sun, 22 Dec 2002 22:20:52 +0000 (22:20 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@98074 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/mod/beos.xml [new file with mode: 0644]
docs/manual/mod/leader.xml [new file with mode: 0644]
docs/manual/mod/mpmt_os2.xml [new file with mode: 0644]
docs/manual/mod/threadpool.xml [new file with mode: 0644]
docs/manual/sitemap.xml

diff --git a/docs/manual/mod/beos.xml b/docs/manual/mod/beos.xml
new file mode 100644 (file)
index 0000000..4d824a8
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
+<modulesynopsis>
+
+<name>beos</name>
+<description>This Multi-Processing Module is optimized for BeOS.</description>
+<status>MPM</status>
+<sourcefile>beos.c</sourcefile>
+<identifier>mpm_beos_module</identifier>
+
+<summary>
+    <p>This Multi-Processing Module (MPM) is the default for BeOS. It uses
+    a single control process creates threads to handle requests.</p>
+</summary>
+<seealso><a href="../bind.html">Setting which addresses and ports Apache
+uses</a></seealso>
+
+<directivesynopsis location="mpm_common"><name>User</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Group</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Listen</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>StartThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxClients</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>PidFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>MaxRequestsPerThread</name>
+<description>Limit on the number of requests that an individual thread
+will handle during its life</description>
+<syntax>MaxRequestsPerThread <var>number</var></syntax>
+<default>MaxRequestsPerThread 0</default>
+<contextlist><context>server config</context></contextlist>
+
+<usage>
+    <p>The <directive>MaxRequestsPerThread</directive> directive sets
+    the limit on the number of requests that an individual server thread
+    will handle. After <directive>MaxRequestsPerThread</directive>
+    requests, the thread will die. If <directive
+    >MaxRequestsPerThread</directive> is <code>0</code>, then the thread
+    will never expire.</p>
+
+    <p>Setting <directive>MaxRequestsPerThread</directive> to a
+    non-zero limit has two beneficial effects:</p>
+
+    <ul>
+      <li>it limits the amount of memory that a thread can consume
+      by (accidental) memory leakage;</li>
+
+      <li>by giving threads a finite lifetime, it helps reduce
+      the number of threads when the server load reduces.</li>
+    </ul>
+
+    <note><title>Note:</title>
+      <p>For <directive module="core">KeepAlive</directive> 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 thread.</p>
+    </note>
+</usage>
+</directivesynopsis>
+
+</modulesynopsis>
+
diff --git a/docs/manual/mod/leader.xml b/docs/manual/mod/leader.xml
new file mode 100644 (file)
index 0000000..9609306
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
+
+<modulesynopsis>
+<name>leader</name>
+<description>An experimental variant of the standard <module>worker</module>
+MPM</description>
+<status>MPM</status>
+<sourcefile>leader.c</sourcefile>
+<identifier>mpm_leader_module</identifier>
+
+<summary>
+    <note type="warning"><title>Warning</title>
+      <p>This MPM is experimental, so it may or may not work
+      as expected.</p>
+    </note>
+    
+    <p>This is an experimental variant of the standard
+    <module>worker</module> MPM. It uses a Leader/Followers design pattern
+    to coordinate work among threads. For more info, see <a
+    href="http://deuce.doc.wustl.edu/doc/pspdfs/lf.pdf"
+    >http://deuce.doc.wustl.edu/doc/pspdfs/lf.pdf</a>.</p>
+
+    <p>To use the <module>leader</module> MPM, add
+    <code>--with-mpm=leader</code> to the configure script's arguments
+    when building the httpd.</p>
+  
+    <p>This MPM depends on APR's atomic compare-and-swap operations for
+    thread synchronization. If you are compiling for an x86 target
+    and you don't need to support 386s, or you are compiling for a
+    SPARC and you don't need to run on pre-UltraSPARC chips, add
+    <code>--enable-nonportable-atomics=yes</code> to the configure
+    script's arguments. This will cause APR to implement atomic operations
+    using efficient opcodes not available in older CPUs.</p>
+</summary>
+
+<directivesynopsis location="mpm_common"><name>AcceptMutex</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Group</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Listen</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>LockFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxClients</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>PidFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ServerLimit</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>StartServers</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ThreadLimit</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>User</name>
+</directivesynopsis>
+
+</modulesynopsis>
\ No newline at end of file
diff --git a/docs/manual/mod/mpmt_os2.xml b/docs/manual/mod/mpmt_os2.xml
new file mode 100644 (file)
index 0000000..567c657
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
+
+<modulesynopsis>
+
+<name>mpmt_os2</name>
+<description>Hybrid multi-process, multi-threaded MPM for OS/2</description>
+<status>MPM</status>
+<sourcefile>mpmt_os2.c</sourcefile>
+<identifier>mpm_mpmt_os2_module</identifier>
+
+<summary>
+    <p>The Server consists of a main, parent process and a small, static
+    number of child processes.</p>
+
+    <p>The parent process's job is to manage the child processes. This
+    involves spawning children as required to ensure there are always
+    <directive module="mpm_common">StartServers</directive> processes
+    accepting connections.</p>
+    
+    <p>Each child process consists of a a pool of worker threads and a
+    main thread that accepts connections and passes them to the workers via
+    a work queue. The worker thread pool is dynamic, managed by a
+    maintenance thread so that the number of idle threads is kept between
+    <directive module="mpm_common">MinSpareThreads</directive> and
+    <directive module="mpm_common">MaxSpareThreads</directive>.</p>
+</summary>
+<seealso><a href="../bind.html">Setting which addresses and ports Apache
+uses</a></seealso>
+
+<directivesynopsis location="mpm_common"><name>User</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Group</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Listen</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>PidFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>StartServers</name>
+</directivesynopsis>
+
+</modulesynopsis>
diff --git a/docs/manual/mod/threadpool.xml b/docs/manual/mod/threadpool.xml
new file mode 100644 (file)
index 0000000..b43dc41
--- /dev/null
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
+
+<modulesynopsis>
+<name>threadpool</name>
+<description>Yet another experimental variant of the standard
+<module>worker</module> MPM</description>
+<status>MPM</status>
+<sourcefile>threadpool.c</sourcefile>
+<identifier>mpm_threadpool_module</identifier>
+
+<summary>
+    <note type="warning"><title>Warning</title>
+      <p>This MPM is a developer playground and highly experimental, so it
+      may or may not work as expected.</p>
+    </note>
+
+    <p>This is an experimental variant of the standard worker MPM.
+    Rather than queuing connections like the worker MPM, the
+    <module>threadpool</module> MPM queues idle worker threads and
+    hands each accepted connection to the next available worker.</p>
+
+    <p>The <module>threadpool</module> MPM can't match the performance of
+    the <module>worker</module> MPM in benchmark testing. As of 2.0.39,
+    some of the key load-throtting concepts from the <module
+    >threadpool</module> MPM have been incorporated into the <module
+    >worker</module> MPM. The <module>threadpool</module> code is useful
+    primarily as a research platform. For general-purpose use and for any
+    production environments, use <module>worker</module> instead.</p>
+</summary>
+
+<directivesynopsis location="mpm_common"><name>AcceptMutex</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Group</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>Listen</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>LockFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxClients</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>PidFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ServerLimit</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>StartServers</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ThreadLimit</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
+</directivesynopsis>
+<directivesynopsis location="mpm_common"><name>User</name>
+</directivesynopsis>
+
+</modulesynopsis>
index 41cb1bf7e7d34d2ccc464de9ebf4d550c854343f..deb7bcdd56838e9cc1bbe3aefd7420c7b854b4cf 100644 (file)
@@ -184,12 +184,17 @@ Server on HPUX</page>
   <modulefile>mod_userdir.xml</modulefile>
   <modulefile>mod_usertrack.xml</modulefile>
   <modulefile>mod_vhost_alias.xml</modulefile>
+
   <modulefile>mpm_common.xml</modulefile>
+  <modulefile>beos.xml</modulefile>
   <modulefile>mpm_netware.xml</modulefile>
   <modulefile>mpm_winnt.xml</modulefile>
+  <modulefile>mpmt_os2.xml</modulefile>
   <modulefile>perchild.xml</modulefile>
   <modulefile>prefork.xml</modulefile>
   <modulefile>worker.xml</modulefile>
+  <modulefile>leader.xml</modulefile>
+  <modulefile>threadpool.xml</modulefile>
 </modulefilelist>
 </category>