Apache 2.4 is going to take a lot of pain out of managing Web servers, says Jim Jagielski, president of the Apache Software Foundation (ASF). The 2.4 release, which has been about six years in the making, brings a host of performance improvements, reduced memory usage, and a number of features that make the Apache HTTP Server more suited for cloud environments.
The 2.4 release has been quite a while in the making. In fact, 2.4 is the first major release since the Apache 2.2 series debuted in December of 2005. Jagielski says that there were "lots of starts and stops" during the 2.4 cycle. "We took our time, we wanted to make sure it's as good as possible and as up to date as possible."
Judging by the list of new features, the Apache folks have done quite a bit with the time they've had. One major improvement to the 2.4 series, says Jagielski, is improving the way Apache handles content internally. For example, Jagielski says that many Apache modules do inline replacement of content. Instead of making a copy of the data and then doing replacements on the copy, it does it on the data itself.
New in 2.4
Aside from performance improvements and better memory handling, Apache 2.4 brings a slew of new modules. This includes everything from embedding the Lua language in Apache to rate limiting for clients.
Another feature in 2.4 is the ability to change the way Apache works, on the fly. Apache now has loadable Multi-Processing Modules (MPMs). Basically, the MPM is responsible for the most basic functions of Apache – how Apache accepts and handles requests. Previously, you'd have to recompile Apache to use a different MPM, but with Apache 2.4 the MPM can be chosen at startup instead. This gives admins more flexibility in the way that Apache is used.
In addition to loadable MPMs, Apache 2.4 has bumped the Event MPM up to fully supported status. The Event MPM lets Apache work much like Nginx, by trading off performance for higher concurrency.
Apache vs. Nginx
Apache has been seeing a fair amount of competition from Nginx in the past few years. Jagielski says that the main thing that Nginx has shown Apache is that "the Web server market is huge, and there are scenarios for specialized versions of Web servers instead of generalized. That's one thing we did pull from Nginx... in some use cases, the idea of sacrificing performance for higher concurrency, that's what the event-based MPM is to do, to satisfy that part of the market."
But, Jagielski says it's not an "Apache vs. Nginx" situation. In fact, he says that he's happy for Nginx's success. "We didn't put 2.4 out to try to regain market share or take away from Nginx. We did it because there's a real need for a Web server that meets the demands of cloud environments."
One of the problems with cloud environments with the 2.2 releases is that admins would have to spin up Web servers manually. With 2.4, Apache can be configured to automatically pull in a new Web server to handle additional load. In addition, admins now have a Web-based interface to add and configure Apache clusters – rather than having to tweak text-based configurations by hand.
The release announced today by the ASF is actually the 2.4.1 release. While the project had a 2.4.0 release tagged (predictions were that 2.4.0 would be released late last year), it was never officially released. Jagielski said that 2.4.0 had an issue with Windows that still exists in 2.4.1, which means that the Windows release of Apache "is lagging behind the Linux/UNIX version." The problem relates to the way that the Windows filter stack works with SSL. Jagielski says that Apache will be asking Microsoft for "help and support," to get the bug fixed.
With any luck, that'll turn up in the 2.4.2 release. Jagielski says that Apache 2.4 will see minor releases "every other month or so" as more people start using 2.4 in production.