Windows Web Servers
If you can't make it good, at least make it look good.
Microsoft can only win by making others fail
In 2009, 46% of all Web sites – and 66% of the million busiest - use Apache. Apache fuels Oracle, IBM WebSphere, Apple WebObjects, Novell NetWare and many others.
Servers waste 30-40% of the input power, increasing cooling systems costs. Gartner Group predicts that by 2011, more than 70% of U.S. data centers will face tangible disruptions related to the "looming electricity crunch".
ApacheBench (ab) compared* TrustLeap G-WAN v1.0.3 (100 KB), IBM Apache, Rock (specweb's 2008/09 winner), Nginx, LigHTTPd, Cherokee and Microsoft IIS:
Single-Core: Dell Precision 650 (Oct 2003), Intel Xeon 3.06GHz, 1GB RAM 266MHz, Intel Pro/1000 NIC, Windows XP Pro SP3:
Multi-Core: Acer G7700 (Aug 2008), Intel Core2 Quad X9650 3GHz, 4GB RAM 800MHz, Marvell Yukon 88E8056, Vista Ultimate 64-bit.
IIS cheated by jumping into the Windows kernel where it is not slowed by the (purposely?) inflated Windows user-mode overhead (6x higher than on Linux). When it runs in user-mode, like on Windows XP, IIS is slower than all.
Microsoft wins only by making others fail: on our single-core Xeon PC Apache is 3.5x faster on Linux than on Windows XP – and it happily does 5,000+ requests/sec. at concurrency=1,000 (instead of just dying).
It also means that G-WAN will be (much) faster on Linux and Solaris.
As Rock and G-WAN both use GetQueuedCompletionStatus/WSASend, Rock's performance gap is entirely due to a larger request processing time, the portable part of a Web Server.
When others are overwhelmed, G-WAN still delivers more than their top. When the traffic is low G-WAN leaves more free CPU cycles for other tasks.
(*) ab and HTTP servers were run on the same host to compare their relative CPU efficiency: ab -k -c 1 -t 1 http://10.10.2.6/1000.html; Single-Core: Rock blocks at concurrency=40 unless you warm it up first with non-keep-alive connections and progressive concurrency; LightTPD performed worse than Apache and blocked at 200; Multi-Core: Cherokee blocks at the 2nd HTTP request on Vista 64-bit; on our Multi-Core PC, when ASP.Net is installed the Windows Vista TCP/IP stack is 10% slower; tunable options: no log files, accept_max=1024, keepalive_max=100,000.