mirror of
https://github.com/apache/httpd.git
synced 2026-01-06 09:01:14 +03:00
77146c56ac41fdbee070af0fca66b98c8c5eff8a
The threadpool MPM implements Aaron Bannert's "time-space tradeoff" design managing idle workers. Rather than putting accepted connections into a queue, the threadpool MPM keeps idle worker threads in a stack. Its dedicated listener thread retrieves an idle worker from the stack before accepting a connection. If there are no idle workers, the listener blocks until a worker becomes available before doing an accept. In many ways, threadpool is also a variant of leader/follower. They both maintain a stack of idle threads. The difference is that threadpool has a dedicated listener thread, and leader/follower rotates the listening responsibility among its worker threads. In my initial testing, the leader/follower MPM performs very well on multiprocessor Solaris 8 when listening on a single port, but poorly when listening on multiple ports. (I don't know why this is happening. What I've found so far is that when you add a poll on the listen socket(s) before the accept in the leader/follower MPM, all the socket-related syscalls in the httpd get slower. My hypothesis is that the thread scheduler is making an optimal decision about where (on what CPU) to run the newly awakened thread if its first syscall is an accept, and a nonoptimal decision if its first syscall is a poll.) The threadpool MPM performs better with multiple listener ports, and in my testing so far it looks competitive with leader/follower when running with a single listener. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94672 13f79535-47bb-0310-9956-ffa450edef68
Apache HTTP Server
What is it?
-----------
The Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant
web server. Originally designed as a replacement for the NCSA HTTP
Server, it has grown to be the most popular web server on the
Internet. As a project of the Apache Software Foundation, the
developers aim to collaboratively develop and maintain a robust,
commercial-grade, standards-based server with freely available
source code.
The Latest Version
------------------
Details of the latest version can be found on the Apache HTTP
server project page under http://httpd.apache.org/.
Documentation
-------------
The documentation available as of the date of this release is
included in HTML format in the docs/manual/ directory. The most
up-to-date documentation can be found at
http://httpd.apache.org/docs-2.0/.
Installation
------------
Please see the file called INSTALL.
Licensing
---------
Please see the file called LICENSE.
Contacts
--------
o If you want to be informed about new code releases, bug fixes,
security fixes, general news and information about the Apache server
subscribe to the apache-announce mailing list as described under
http://httpd.apache.org/lists.html#http-announce
o If you want freely available support for running Apache please join the
Apache user community by subscribing to Users Mailing List at
http://httpd.apache.org/userslist.html or one of the following USENET
newsgroups:
comp.infosystems.www.servers.unix
comp.infosystems.www.servers.ms-windows
Also available at:
http://groups.google.com/groups?group=comp.infosystems.www.servers
o If you want commercial support for running Apache please contact
one of the companies and contractors which are listed at
http://www.apache.org/info/support.cgi
o If you have a concrete bug report for Apache please go to the
Apache Group Bug Database and submit your report:
http://httpd.apache.org/bug_report.html
o If you want to participate in actively developing Apache please
subscribe to the `dev@httpd.apache.org' mailing list as described at
http://www.apache.org/lists.html#http-dev
Acknowledgments
----------------
We wish to acknowledge the following copyrighted works that
make up portions of the Apache software:
Portions of this software were developed at the National Center
for Supercomputing Applications (NCSA) at the University of
Illinois at Urbana-Champaign.
This software contains code derived from the RSA Data Security
Inc. MD5 Message-Digest Algorithm, including various
modifications by Spyglass Inc., Carnegie Mellon University, and
Bell Communications Research, Inc (Bellcore).
Regular expression support is provided by the PCRE library package, which
is open source software, written by Philip Hazel, and copyright by the
University of Cambridge, England. The original software is available from
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
Apache 2.0 relies heavily on the use of autoconf and libtool to provide
a build environment.
Description
Languages
C
90.7%
Python
5.4%
M4
1%
Shell
0.9%
CMake
0.4%
Other
1.3%