Apache Week
   
   Issue 258, 10th August 2001:  

Copyright ©2020 Red Hat, Inc

In this issue


Under development

Threading models in Apache 2.0

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.

Apache 2.0 beta imminent?

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.

Further work on SSL module in 2.0 and httpd test suite

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.


In the news

AxKit becomes an Apache project

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


Featured articles

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.