blob: b43dc41253c71ac97f2526ff7a24f3eeaceeae06 [file] [log] [blame]
<?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>