Today I stumbled over this quote again:
“Perfection is achieved, not when there is nothing left to add, but when there is nothing left to remove.” — Antoine de Saint-Exupery
… and this reminds me that I want to remove mod_rrdtool from the 1.5.x tree and replace it with a more flexible, external solution.
mod_rrdtool is a rip-off of mod_status and calls the rrdtool binary directly via a pipe. Problems:
- is has a pipe open all the time
- it doesn’t handle a restart
- doesn’t work with max-worker
This month the Web Server Survey adds public tracking of lighttpd, an open source server designed for high-performance sites that has been gaining popularity in recent months. Lighttpd is currently detected on 1.38 million sites for a 1.2% share of the web server market, well ahead of Zeus and moving up quickly on Sun. Lighttpd has a relatively small memory footprint and is optimized for a large number of parallel connections, which has made it popular on sites using applications based on AJAX or Ruby on Rails, or hosting environments for virtual private servers.
The news got picked up by:
With the release of 1.5.0 we aim for higher ranks and try to get ahead of Suns iplanet. You always need a goal: World Domination. :)
After getting covered with benchmark and stumbling over time-outs reported by http_load it was time to look a bit deeper into the problem.
www.lighttpd.net/2007/3/5/thread-starvation talks about how you can reduce the probability of time outs reported to the user. With the help of a new timing infrastructure you can now track the time spent a different stages of a request. With the help of gnuplot you can get a feeling of where the time is spent.
To make the long story short: If you use one of the async-io backends in 1.5.0 you want to set the server.max-read-threads to twice the number of disks.
A new pre-release on the road to stabilize 1.5.0.
Most of the work went into mod-proxy-core and new platforms:
- m-p-c can handle uploads via APJ13 which required some larger patches
- we should compile fine on solaris and IRIX again
- kqueue should work too again
- we compile natively on win32 (staticly and dynamicly)
The is the first official release that compiles natively on win32. Read the instructions on docs/build-win32.txt if you want to build yourself. It even starts :)
I have to say thanks to all the testers on the IRC channel, to jtiai for the win32 patches and jakabosky for the hard work on mod-proxy-core.
Kiel, Germany. – … how to start such a press-release ?
According to netcraft’s server-survey Feb’07 lighttpd is now on #6 and has now a market-share of 0.6%. This is more then 700,000 domains which are handled by lighttpd. Last month we were at #12 with 170,000 domains.
image provided by Michael Hayes
Even if I don’t trust this impressive raise I’m none-the-less impressed by it. What comes next ? If we really make it into the top5 for a longer time I will need someone who knows how to write a press-release.
As you may have noticed, www.lighttpd.net got moved to a new host, sharing the same box as all the other lighttpd.net domains. It is using mephisto as its content-backend to give you the possibility to comment if you want.
I added a first, full benchmark for Async IO and optimal parameters at www.lighttpd.net/2007/2/3/raw-io-performance
A lot of changes made it into the svn recently. It is time again to spread the code to more testers than just the few early adaptors who are using the svn-trunk/
Please try out the new stuff around async-io and dynamic compression of content. Even directory-listings are now automaticly compressed. Just load mod_deflate and set
deflate.mimetypes = ( “text/html” )
- added check for leading slashes in mod_rewrite
- improved async-io performance for files between 4k and 16k
- fixed compression of static files in mod_deflate
- fixed configure check for the library providing aio_read()
- fixed moddirlisting, modstaticfile and the internal error-pages for mod_deflate
- fixed compilation on FreeBSD and MacOS X
- added O_NOATIME support to the network-backends linux-sendfile and writev
- added a portable, threaded network-backend based on glib’s gthread
- added threaded stat()
- added url.redirect-code to mod_redirect to set other HTTP status-codes than 302
- added filter-API and mod_chunked and mod_deflate for dynamic compression
- added a static balancer for mod-proxy-core
- added $HTTP[“request-method”] and $PHYSICAL[“path”] conditionals
- fixed X-Sendfile support in mod-proxy-core
- fixed crash if mtime is 0
- added cmake as experimental build-system
- fixed urls in AJP13-protocol of mod-proxy-core
- added support for “now” and “weeks” to mod-expire
- added mod-magnet