Apache 2.0 in production

Apache 2.0 has shipped as stable. After a fortnight of running it on a test host, the architectural improvements are real and worth a short note.

What is new

Apache 2.0 is a substantial rewrite of the 1.3 codebase. The main improvements:

Multi-Processing Modules (MPMs). Apache 2.0 supports multiple concurrency models: the traditional per-process forking, a per-thread model, and hybrid forms. The right choice depends on the workload; the configurability is the win.

APR (Apache Portable Runtime). A portability layer that abstracts over OS differences. Modules written against APR work on multiple operating systems without per-OS adjustments. The design is similar in spirit to the netfilter framework.

Improved mod_ssl integration. SSL is now a first-class module rather than a bolt-on. The integration is cleaner; the configuration is simpler.

Reorganised request lifecycle. The hooks that modules can register for are more granular and better-named. Module development is somewhat easier.

What I have observed

The test host has been running Apache 2.0.36 for two weeks, serving the same workload as a parallel Apache 1.3 host.

Performance is comparable. For my modest workload, the two are essentially identical. Larger deployments may see meaningful differences depending on the MPM chosen.

Configuration migration is clean. Most 1.3 directives work in 2.0 without modification. A few have been renamed; the documentation lists the changes.

Module compatibility is mixed. Modules written for 1.3 do not work in 2.0; they need to be ported to APR. Most major modules have been ported; some niche modules have not.

What I am doing

For my own infrastructure: I will migrate to 2.0 over the next several months, after the 2.0.x patch releases reach a comfortable stability. The 2.0.36 I am testing is solid; I would like a few more weeks of observation before production deployment.

For friends running Apache 1.3: no urgency to migrate. 1.3 is supported and patched. Migration when convenient.

More as the experiment continues.


Back to all writing