Ubuntu 10.10 “Maverick Meerkat” goes final, download now and avoid the queues!

Last night a base-files update for Ubuntu 10.10-RC went live which removes all the development branding and essentially takes you to the release build.

With the last few releases the download rates on release day have been incredibly slow, so avoid the wait and download now.

I’ve been using the development build for around a month without issue on 1 server and a couple of desktops, it seams solid and stable, worth updating right away.

What’s new (that I noticed)….

For desktop: slightly tweaked UI, Gnome 2.32, brand new software centre which also unifies the .deb installation, probably lots more (see ubuntu.com).

For server: PHP is now version 5.3.3, MySQL updated to 5.1.49, Apache updated to 2.2.16.

For all: Kernel updated to 2.6.35


Web server benchmark PHP – Apache vs Nginx vs Lighttpd

This is a quick benchmark of the 3 major *nix web servers, to see which gives the best performance.

Test system:

Hardware: vps247 cloud VPS node, 512Mb ram.
Software: Ubuntu 10.10 RC (kernel 2.6.35-22), Apache 2.2.16 (mod_php), Nginx 0.7.67 (php-fpm), Lighttpd 1.4.26 (php-cgi), PHP 5.3.3 with Xcache.
Site: LiteMVC 0.1 Hello World.

Test process:

Using ab with 10,000 requests, 10 concurrent requests.
Monitoring load/memory usage with htop.
All web servers with default configuration, 1 site enabled.
All tests were repeated 3 times.

Apache 2.2.16:

Test 1 Test 2 Test 3
Load at start: 0.03
Memory usage at start: 130 Mb
Load average max: 15.88
Memory usage max: 290 Mb
Requests per second: 400.04
Time per request: 2.5 ms
Longest request: 806 ms
Load at start: 0.07
Memory usage at start: 130 Mb
Load average max: 21.73
Memory usage max: 332 Mb
Requests per second: 395.49
Time per request: 2.529 ms
Longest request: 728 ms
Load at start: 0.06
Memory usage at start: 121 Mb
Load average max: 20.95
Memory usage max: 253 Mb
Requests per second: 385.82
Time per request: 2.592 ms
Longest request: 937 ms

Nginx 0.7.67:

Test 1 Test 2 Test 3
Load at start: 0.05
Memory usage at start: 129 Mb
Load average max: 0.77
Memory usage max: 157 Mb
Requests per second: 413.40
Time per request: 2.419 ms
Longest request: 239 ms
Load at start: 0.05
Memory usage at start: 152 Mb
Load average max: 0.93
Memory usage max: 169 Mb
Requests per second: 409.15
Time per request: 2.444 ms
Longest request: 232 ms
Load at start: 0.00
Memory usage at start: 163 Mb
Load average max: 0.61
Memory usage max: 169 Mb
Requests per second: 415.28
Time per request: 2.408 ms
Longest request: 250 ms

Lighttpd 1.4.26:

Test 1 Test 2 Test 3
Load at start: 0.00
Memory usage at start: 115 Mb
Load average max: 0.81
Memory usage max: 139 Mb
Requests per second: 427.92
Time per request: 2.337 ms
Longest request: 120 ms
Load at start: 0.09
Memory usage at start: 136 Mb
Load average max: 0.73
Memory usage max: 143 Mb
Requests per second: 447.10
Time per request: 2.237 ms
Longest request: 111 ms
Load at start: 0.03
Memory usage at start: 140 Mb
Load average max: 0.69
Memory usage max: 159 Mb
Requests per second: 454.13
Time per request: 2.202 ms
Longest request: 178 ms


Lighttpd was the fastest overall in this test, however what probably stands out the most is the inefficiency of Apache with both server load and memory usage increasing considerably during the test. The reason for this may be down to Apache spawning additional processes when it is receiving a large volume of requests, which results in the higher memory usage. The memory usage with Nginx and Lighttpd increases by a much smaller amount because each of them runs a fixed number of PHP CGI processes (20 in this case).

Apache is definitely the winner in terms of module support and ease of configuration, but I may have a somewhat biased view as I’ve worked with Apache for years. Nginx is probably the hardest to setup and configure, however after switching from PHP-CGI to PHP-FPM this made things easier and it does seam there are more configuration examples floating around on the net than for Lighttpd. Lighttpd is notorious for memory leaks, I’m not sure if this is still an issue with current versions.