The main topic of discussion for the last month has continued to be
the problems with the threaded MPM in Apache 2.0. The
CVS tree was tagged twice to make test releases of 2.0.21, and 2.0.22,
but both releases were abandoned after problems found during testing.
Despite these problems, as a testament to the increasing stability of
Apache 2.0, the server currently running on apache.org has been
serving requests
for over nine days, through many restarts.
The threaded MPM uses a hybrid process/thread model,
with multiple server processes each containing many individual
threads. All the threads sit in an accept() loop, waiting for a
connection. As in Apache 1.3, calls to accept() must be serialised
for performance reasons. Handling accept serialisation across all
these threads together with scoreboard updates, and graceful restarts,
proved to be an extremely complex task. To this end, a new MPM has
been committed to the Apache 2.0 tree using a design dubbed "single
listener, multi-worker". This model is the same as
threaded, except it uses an extra listener thread for
each process to accept() new connections, and this thread then passes
the connections off to other worker threads.
The 2.0.23 release was made ready for testing by the release
manager, Cliff Woolley, and all reports have been positive so far.
The prefork MPM was made the default in this release
because of the problems with threaded covered above.
Development of the SSL module in Apache 2.0 has continued with a
steady stream of patches from Madhusudan Mathihalli. The changes made
have been to adapt the mod_ssl code for 2.0's filtered I/O interface,
and to make use of the APR portability layer.
A test suite for the Apache httpd server is now under development,
currently including over fifty PHP tests, and more for several stock
Apache modules including mod_include and
mod_rewrite. The suite is written in Perl and based on
mod_perl 2.0's test framework, and can be checked out of the CVS
module httpd-test.
According to the development mailing list last week, AxKit was accepted as a
new project of the Apache Software Foundation.
AxKit is an XML application server for Apache. It performs a similar
function to the Apache Cocoon project, but
is written in Perl and C rather than Java. At the O'Reilly Open Source
conference last month the author, Matt Sergeant, even described AxKit
as "the C version of Cocoon". AxKit was born as a way of collecting
together the various Perl XML technologies and using them to deliver
the same XML data in different formats via a web server.
The use of XML
allows for the
separation of content, presentation, and logical site management.
We're big fans of AxKit here at Apache Week and we've already started
converting our own internal proprietary markup language used to write these
stories to XML and XSLT
In this section we highlight some of the articles on the web that are of
interest to Apache users.
"Sending MIME e-mail from PHP" part
4 and part
5 wrap up the series on MIME e-mail by looking at each of the 11
member functions in the HTML MIME class in detail. For an example of how
to use the class, you may download and experiment with the HTML MIME
mail script written by Richard Heyes.
In "HTTP
Benchmarking, Part 3: Tips and Tweaks", Joe "Zonker" Brockmeier shows
you how to tweak the Apache Web server to improve performance. Although he
focuses on Linux systems, some of the tips can be applied on other systems
as well.
Since Apache Week is using XML now and our writers like it very much,
it is only
appropriate for us to share the knowledge of XML with our readers. As a
starter, here are "XML Basics" part 1 and
part 2
which explain all about the origins and design goals of XML, the basic
rules of XML markup, how elements and attributes work, the differences
between well-formed and valid XML, and XML's more advanced constructs
such as entities, namespaces, CDATA blocks and processing instructions.