A friend of mine created a new website for Grubby, a Dutch professional gamer for WarCraft 3 and StarCraft 2. This PHP website is hosted on a quad-core VPS with 8 GB RAM. During busy moments, the server has a thousand simultaneous connections. During testing, the server had about 600 simultaneous connections, which caused a load of 2.7* on the VPS.
This load was expected, so the website was built to make use of Hiawatha's CGI-caching feature. Each page that is generated by PHP will be cached by Hiawatha when the PHP script allows it. The pages were only cached for a few seconds, but this caused the load to drop to 0.05. Even with more than thousand simultaneous connections!
So, if you have ever asked yourself if Hiawatha is capable of serving heavy traffic website, the answer is definitely: yes!
*) For people who don't know what this number means; it's the number of required CPU's to handle the load. So, a load of 1 on a single core system means the machine is 100% busy, just like a load of 2 on a dual-core system.
Congrats Hugo!
Xen PV domU (private cluster, not oversubscribed)
OS/Kernel: Debian 7, 3.2.0-4-amd64
CPU: AMD Opteron(tm) Processor 6376 (2 cores)
Memory: 512MB (DDR3 ~1600MHz)
This was performed with AB and httperf. If I get the time, I'll do a more formalized benchmark and publish the results.
How do you tune the Hiawatha? Would you mind sharing with us?
During benchmarking, monitor the CPU, memory, and IO load on the webserver. Admittedly, I wasn't actually able to saturate Hiawatha's CPUs in my quick and dirty benchmarks, because I saturated the test host's upstream pipe. This wasn't the case for nginx, which bottlenecked on CPU before the pipe was fully saturated.
Also, note that this is with a stock Debian kernel. I imagine if I took a few extra steps and rolled a custom kernel specifically for throughput, targeted cflags, etc... those numbers might be even higher.
Thanks for the information.
By the way, how do you measure the benchmark? Which tool?