You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@apache.org on 2001/02/13 21:30:19 UTC
cvs commit: httpd-2.0/server/mpm/dexter Makefile.in Makefile.libdir config.m4 dexter.c mpm.h mpm_default.h
rbb 01/02/13 12:30:19
Modified: . CHANGES INSTALL
docs/conf httpd-std.conf
docs/manual/mod index-bytype.html index.html mpm_common.html
perchild.html
server/mpm MPM.NAMING config.m4
Removed: docs/manual/mod dexter.html
server/mpm/dexter Makefile.in Makefile.libdir config.m4
dexter.c mpm.h mpm_default.h
Log:
Remove the dexter MPM. This has been replaced with the Perchild MPM.
The two MPMs are basically identical, except that Perchild also allows
each child process to have a unique uid/gid combination.
Revision Changes Path
1.92 +5 -0 httpd-2.0/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/httpd-2.0/CHANGES,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -d -b -w -u -r1.91 -r1.92
--- CHANGES 2001/02/13 03:26:23 1.91
+++ CHANGES 2001/02/13 20:30:10 1.92
@@ -1,5 +1,10 @@
Changes with Apache 2.0b1
+ *) Remove the dexter MPM. Perchild is the same basic idea, but it has the
+ added feature of allowing a uid/gid per child process. If no
+ uid/gid is specified, then Perchild behaves exactly like dexter.
+ [Ryan Bloom]
+
*) Get perchild building again. [Ryan Bloom]
*) Don't disable threads just because we are using the prefork MPM.
1.7 +0 -2 httpd-2.0/INSTALL
Index: INSTALL
===================================================================
RCS file: /home/cvs/httpd-2.0/INSTALL,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -b -w -u -r1.6 -r1.7
--- INSTALL 2001/01/12 04:44:47 1.6
+++ INSTALL 2001/02/13 20:30:10 1.7
@@ -325,8 +325,6 @@
mpmt_pthread ..... Mutli-process(dynamic) Multi-threaded(static)
Unix MPM
prefork .......... Preforking Unix MPM
- dexter ........... Multi-process(static) Multi-threaded(dynamic)
- Unix MPM
perchild ......... Multi-process(static) Multi-threaded(dynamic)
Unix MPM, that allows a User per child process
1.22 +3 -3 httpd-2.0/docs/conf/httpd-std.conf
Index: httpd-std.conf
===================================================================
RCS file: /home/cvs/httpd-2.0/docs/conf/httpd-std.conf,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -b -w -u -r1.21 -r1.22
--- httpd-std.conf 2001/02/10 23:53:07 1.21
+++ httpd-std.conf 2001/02/13 20:30:12 1.22
@@ -72,7 +72,7 @@
# this file will be created when you run Apache) then you *must* ensure that
# no two invocations of Apache share the same scoreboard file.
#
-<IfModule !dexter.c>
+<IfModule !perchild.c>
ScoreBoardFile logs/apache_runtime_status
</IfModule>
@@ -134,14 +134,14 @@
MaxRequestsPerChild 0
</IfModule>
-# dexter MPM
+# perchild MPM
# NumServers ........... constant number of server processes
# StartThreads ......... initial number of worker threads in each server process
# MinSpareThreads ...... minimum number of worker threads which are kept spare
# MaxSpareThreads ...... maximum number of worker threads which are kept spare
# MaxThreadsPerChild ... maximum number of worker threads in each server process
# MaxRequestsPerChild .. maximum number of connections per server process (then it dies)
-<IfModule dexter.c>
+<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
1.13 +0 -3 httpd-2.0/docs/manual/mod/index-bytype.html
Index: index-bytype.html
===================================================================
RCS file: /home/cvs/httpd-2.0/docs/manual/mod/index-bytype.html,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -b -w -u -r1.12 -r1.13
--- index-bytype.html 2000/12/21 02:26:56 1.12
+++ index-bytype.html 2001/02/13 20:30:13 1.13
@@ -28,9 +28,6 @@
<DL>
<DT><A HREF="core.html">Core</A>
<DD>Core Apache features.
-<DT><a href="dexter.html">dexter</a>
-<DD>Multi-Processing Module with Threading via Pthreads; Fixed number
-of processes, variable number of threads/child
<DT><A HREF="mpmt_pthread.html">mpmt_pthread</A>
<DD>Multi-Processing Module with Threading via Pthreads; Variable number
of processes, constant number of threads/child
1.48 +0 -3 httpd-2.0/docs/manual/mod/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/httpd-2.0/docs/manual/mod/index.html,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -b -w -u -r1.47 -r1.48
--- index.html 2000/12/21 02:26:56 1.47
+++ index.html 2001/02/13 20:30:14 1.48
@@ -29,9 +29,6 @@
<DL>
<DT><A HREF="core.html">Core</A>
<DD>Core Apache features.
-<DT><a href="dexter.html">dexter</a>
-<DD>Multi-Processing Module with Threading via Pthreads; Fixed number
-of processes, variable number of threads/child
<DT><A HREF="mpmt_pthread.html">mpmt_pthread</A>
<DD>Multi-Processing Module with Threading via Pthreads; Variable number
of processes, constant number of threads/child
1.9 +19 -19 httpd-2.0/docs/manual/mod/mpm_common.html
Index: mpm_common.html
===================================================================
RCS file: /home/cvs/httpd-2.0/docs/manual/mod/mpm_common.html,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -b -w -u -r1.8 -r1.9
--- mpm_common.html 2000/12/09 19:50:04 1.8
+++ mpm_common.html 2001/02/13 20:30:14 1.9
@@ -66,7 +66,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, perchild</p>
+><STRONG>Module:</STRONG></A> perchild</p>
<p>Whether or not to maintain status information on current
connections. If this is off then mod_status will not work properly.</p>
@@ -94,7 +94,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork, mpm_winnt</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork, mpm_winnt</p>
<p>This controls the directory to which Apache attempts to switch
before dumping core. The default is in the <A
@@ -125,7 +125,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork</p>
The Group directive sets the group under which the server will answer requests.
In order to use this directive, the stand-alone server must be run initially
@@ -175,7 +175,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork, mpm_winnt</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork, mpm_winnt</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
@@ -210,7 +210,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork, mpm_winnt</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork, mpm_winnt</p>
<P>The Listen directive instructs Apache to listen to only specific IP
@@ -279,7 +279,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork, mpm_winnt</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork, mpm_winnt</p>
<P>The maximum length of the queue of pending connections. Generally no
tuning is needed or desired, however on some systems it is desirable
@@ -312,7 +312,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork</p>
<p>The LockFile directive sets the path to the lockfile used when
Apache is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
@@ -394,7 +394,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, prefork, perchild, mpm_winnt</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, prefork, perchild, mpm_winnt</p>
<p>The MaxRequestsPerChild directive sets the limit on the number of requests
that an individual child server process will handle. After MaxRequestsPerChild
@@ -424,7 +424,7 @@
<A
HREF="directive-dict.html#Default"
REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>MaxSpareThreads 10 (Dexter or Perchild) or 500 (Mpmt_pthread) </CODE><BR>
+><STRONG>Default:</STRONG></A> <CODE>MaxSpareThreads 10 (Perchild) or 500 (Mpmt_pthread) </CODE><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -436,10 +436,10 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild</p>
<P>Maximum number of idle threads. Different MPMs deal with this directive
-differently. Dexter and Perchild monitor the number of idle threads on a
+differently. Perchild monitor the number of idle threads on a
per-child basis. If there are too many idle threads in that child, the server
will begin to kill threads within that child.</P>
<P>Mpmt_pthread deals with idle threads on a server-wide basis. If there are
@@ -491,7 +491,7 @@
<A
HREF="directive-dict.html#Default"
REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>MaxSpareThreads 5 (Dexter or Perchild) or 250 (Mpmt_pthread) </CODE><BR>
+><STRONG>Default:</STRONG></A> <CODE>MaxSpareThreads 5 (Perchild) or 250 (Mpmt_pthread) </CODE><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -503,10 +503,10 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild</p>
<P>Minimum number of idle threads to handle request spikes. Different MPMs
-deal with this directive differently. Dexter and Perchild monitor the number
+deal with this directive differently. Perchild monitor the number
of idle threads on a per-child basis. If there aren't enough idle threads in
that child, the server will begin to create new threads within that child.
</P>
@@ -538,7 +538,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, perchild</p>
+><STRONG>Module:</STRONG></A> perchild</p>
<p>Number of children alive at the same time. MPMs that use this directive
do not dynamically create new child processes so this number should be
@@ -572,7 +572,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork</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
@@ -610,7 +610,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork, mpm_winnt</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork, mpm_winnt</p>
The server will set the TCP buffer size to the number of bytes
specified. Very useful to increase past standard OS defaults on high
@@ -670,7 +670,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, perchild</p>
+><STRONG>Module:</STRONG></A> perchild</p>
<p>Number of threads each child creates on startup. As the number of threads
is dynamically controlled depending on the load, there is usually little
@@ -732,7 +732,7 @@
<A
HREF="directive-dict.html#Module"
REL="Help"
-><STRONG>Module:</STRONG></A> dexter, mpmt_pthread, perchild, prefork</p>
+><STRONG>Module:</STRONG></A> mpmt_pthread, perchild, prefork</p>
The User directive sets the userid as which the server will answer requests.
In order to use this directive, the standalone server must be run initially
1.4 +44 -5 httpd-2.0/docs/manual/mod/perchild.html
Index: perchild.html
===================================================================
RCS file: /home/cvs/httpd-2.0/docs/manual/mod/perchild.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- perchild.html 2000/12/03 06:05:44 1.3
+++ perchild.html 2001/02/13 20:30:14 1.4
@@ -38,11 +38,50 @@
<H2>Summary</H2>
-<p>This module creates and controls processes and threads in a manner
-identical to <a href="dexter.html">dexter</a>. However, it adds
-the extra ability to specify that specific processes should serve
-requests under different userids. These processes can then be
-associated with specific virtual hosts.</p>
+<p>This Multi-Processing Module (MPM) implements a hybrid
+multi-process, multi-threaded web server. A fixed number of processes
+create threads to handle requests. Fluctuations in load are handled
+by increasing or decreasing the number of threads in each process.</p>
+
+<p>A single control process launches the number of child processes
+indicated by the <code>NumServers</code> directive at server startup.
+Each child process creates threads as specified in the
+<code>StartThreads</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 new threads to be created. For
+each child process, Apache assesses the number of idle threads and
+creates or destroys threads 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 number
+of server processes that will be created (<code>NumServers</code>) by
+the maximum number of threads created in each process
+(<code>MaxThreadsPerChild</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>
+
+<p>In addition it adds the extra ability to specify that specific processes
+should serve requests under different userids. These processes can
+then be associated with specific virtual hosts.</p>
<!-- XXX: This desperately needs more explanation. -->
1.5 +2 -4 httpd-2.0/server/mpm/MPM.NAMING
Index: MPM.NAMING
===================================================================
RCS file: /home/cvs/httpd-2.0/server/mpm/MPM.NAMING,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -b -w -u -r1.4 -r1.5
--- MPM.NAMING 2001/02/13 02:00:29 1.4
+++ MPM.NAMING 2001/02/13 20:30:16 1.5
@@ -24,11 +24,9 @@
The following MPMs currently exist:
prefork ....... Multi Process Model with Preforking (Apache 1.3)
- dexter ........ Multi Process Model with Threading via Pthreads
+ perchild ...... Multi Process Model with Threading via Pthreads
Constant number of processes, variable number of threads
- perchild ...... Same as dexter, but each child process can have a different
- uid/gid. If no special uid/gid is specified, this is
- dexter.
+ each child process can have a different uid/gid.
mpmt_pthread .. Multi Process Model with Threading via Pthreads
Variable number of processes, constant number of
threads/child (= Apache/pthread)
1.29 +2 -2 httpd-2.0/server/mpm/config.m4
Index: config.m4
===================================================================
RCS file: /home/cvs/httpd-2.0/server/mpm/config.m4,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -b -w -u -r1.28 -r1.29
--- config.m4 2000/12/04 22:33:43 1.28
+++ config.m4 2001/02/13 20:30:16 1.29
@@ -1,7 +1,7 @@
AC_MSG_CHECKING(which MPM to use)
AC_ARG_WITH(mpm,
[ --with-mpm=MPM Choose the process model for Apache to use.
- MPM={dexter,mpmt_beos,mpmt_pthread,prefork,spmt_os2,perchild}],[
+ MPM={mpmt_beos,mpmt_pthread,prefork,spmt_os2,perchild}],[
APACHE_MPM=$withval
],[
if test "x$APACHE_MPM" = "x"; then
@@ -12,7 +12,7 @@
apache_cv_mpm=$APACHE_MPM
-if test "$apache_cv_mpm" = "mpmt_pthread" -o "$apache_cv_mpm" = "dexter" -o "$apache_cv_mpm" = "perchild"; then
+if test "$apache_cv_mpm" = "mpmt_pthread" -o "$apache_cv_mpm" = "perchild"; then
PTHREADS_CHECK
AC_MSG_CHECKING([for which threading library to use])
AC_MSG_RESULT($threads_result)
RE: cvs commit: httpd-2.0/server/mpm/dexter Makefile.in Makefile.libdir config.m4 dexter.c mpm.h mpm_default.h
Posted by Cliff Woolley <cl...@yahoo.com>.
> Remove the dexter MPM. This has been replaced with the Perchild MPM.
> The two MPMs are basically identical, except that Perchild also allows
> each child process to have a unique uid/gid combination.
The only downside is that dexter had a cooler name. =-)
INSTALL:
> mpmt_pthread ..... Mutli-process(dynamic)
Multi-threaded(static)
s/Mutli/Multi
> config.m4:
> - MPM={dexter,mpmt_beos,mpmt_pthread,prefork,spmt_os2,perchild}],[
> + MPM={mpmt_beos,mpmt_pthread,prefork,spmt_os2,perchild}],[
The mpmt_beos MPM was removed, right? And the new BeOS MPM is just called
'beos' and is an spmt MPM.
--Cliff