After much consideration we've decided, for the timebeing at least, to use Cherokee for our webserver of choice. The factors that came into this were:
The contenders were:
The reason for choosing Cherokee, at least for now, is that it is C10K capable, it uses modules for URL redirection rather than a single file that's parsed at every page request and finally it seems fairly well supported with a nice web-based UI for administration.
C10K refers to the problem/inability of older web systems to handle more than 10,000 concurrent connections. A C10K server can handle at least this number per second.
The latest Apache versions seem to handle ~30k connections by most benchmarks but other servers such as NginX, Cherokee and Lighttpd handle approximately at least 60% more.
We decided against NginX for serveral key reasons. The first is that there were very few tutorials on how to tweak the basic setup into a performance server, with most talking about how to install NginX as a reverse proxy on top of an existing web server (usually Apache) installation, with official documentation being in Russian. There was also almost no mention on its ability to handle purely dynamic pages. This shook our confidence in it slightly as the entire Collaborites experience relies on heavily dynamically generated content. If the documentation improves and we can work out how to set it up for optimal dynamic page requests or we find more information and benchmarks on how it handles dynamic pages we may seriously consider switching.
Lighttpd was second after NginX. We were quite interested in this as it seemed the closest to Apache in terms of configuration but numerous stories of memory leaks pushed us away from it.
Cherokee was actually quite a late comer, we stumbled across a few blogs mentioning it in comparison to the others and decided to check it out.
New Collaborites T-shirts arrived today. What do you think?