Forum

Hiawatha vs Apache vs Nginx vs Lighttpd vs Cheroke

Ryan
6 September 2009, 06:00
Does anyone have any benchmarks on how Hiawatha compares in speed and concurrent connections to Apache, Nginx, Lighttpd, Cheroke ?

It would be great if someone for example installed Wordpress with Hiawatha and test the speed of the content served and maximum concurrent connections it can handle, then test Wordpress on Apache then Nginx then Lighttpd then Cheroke, and see which one is the best.

I'm not sure if Hiawatha solved the c10k problem of handling 10,000 concurrent http connections on a single machine.

By the way, does Hiawatha use threads(like apache) or events(like nginx) ?
Hugo Leisink
6 September 2009, 08:32
A good benchmark test requires a website with many users who show all sorts of random behaviour. I don't have the right environment to do such test, but I'm really interested in the results. I did a performance test between Apache and Hiawatha a few years ago. The result is that Hiawatha is as fast as Apache for dynamic content (CGI) and twice as fast for static content (HTML, images, etc). I can already tell you that Hiawatha is not the fastest server when it comes to data throughput. On the other hand, Hiawatha has some interesting features which makes it fast: internal cache, load balanced FastCGI support and banning. Yes, banning improves the overal performance of a server, because it eliminates the connections of abusers. Read the Hiawatha success story for puppylinux.ca here. Performance comparing is not as easy as it looks. It's more than just testing data throughput from a single client.

My opinion about the c10k problem: 10,000 concurrent connections on a single machine is not a problem that should be solved. It should be avoided. If you have a website that busy, using only a single machine is not wise. You should start thinking about fallback and redundancy. But, nevertheless, it would be nice to see how many concurrent connections Hiawatha can handle. Then again, I don't have the right environment to perform such test.

Hiawatha uses threads, unlike Apache which uses the pre-fork model. I think a thread model is better then the poll/select model, because most modern servers have multiple processors. A single process application which uses the poll/select model does not uses all the power of the server, which a threaded application does.
Samiux
6 September 2009, 13:01
Before

My Apache server is running PHP and MySQL as well as eAccelerate (which is a PHP optimizer). The application is XOOPS (a kind of CMS). The operating system is Ubuntu 9.04 Server. I also install modsecurity module to secured my Apache server.

Now

My Ubuntu 9.04 server runs Hiawatha 6.17.1 with PHP and MySQL. The application is XOOPS (the same as above). However, eAccelerate is not required. Security features are built-in.

My Feeling

Hiawatha is running faster than Apache in this environment. eAccelerate is not required to make the PHP running fast. I need not to keep an eye on other Apache modules to make it up-to-date. I just need to check the latest version of Hiawatha and do the update only. One stop for all!

One more situation

My another web server is running Cherokee with PHP and MySQL. But the application is not a CMS. It is running very fast. Faster than Apache and Hiawatha. However, Cherokee comes without security feature that I concern most.

Conclusion

Hiawatha is very easy to install and configure (although the user manual is not very detail at the time of this writing, I would like to write one when I have all the details of the software). It is running faster than Apache and requires no PHP optimizer. Security features are already built-in. The size of the Hiawatha is quite small compare with Apache. Furthermore, Hiawatha has some special features that other web servers without, such as UrlToolKit.

I vote for Hiawatha! I just learn Hiawatha on August 31, 2009 and currently running 2 websites with her.

Prit
6 September 2009, 17:32
As Hugo rightly stated, a plain simple performance test may not reveal everything about the server performance. Just as an example (which he already mentioned), we had around 3-4TB of usage every month as an average. We have peaked at even 40TB of bandwidth in a month.

After switching to Hiawatha, we could eliminate all the bad robots, crawlers that were using up all this extra bandwidth (also cpu and memory) and we are down to around 1TB to 1.5TB a month. If there is a way to measure the resources saved as a performance factor, then Hiawatha would definitely be the best performer.
Ryan
7 September 2009, 05:58
Does Hiawatha have something like this:

http://httpd.apache.org/docs/2.0/programs/ab.html

It tests an Apache server to see how many http requests per second Apache can handle.

If Hiawatha doesn't have a stress/load test tool, couldn't someone write a php script that simulates 10,000 http requests per second, then we can see what the server load is.
Hugo Leisink
7 September 2009, 08:13
No, I always use the 'ab' tool itself. It's prefect for the job. Why should I rewrite a tool which works perfectly?
Ryan
8 September 2009, 06:36
So the 'ab' tool can be used to test Hiawatha vs Apache vs Lighttpd vs Nginx? If the answer is YES, why don't you test it on a normal 2.4GHZ +, 1GB + RAM computer? Then put the results on your website.
Samiux
8 September 2009, 16:33
Ryan,

Nice to meet you.

In my opinion, it is not necessary to compare Hiawatha with other web servers as Hiawatha has her own unique features that others lack of.

Samiux
Hugo Leisink
8 September 2009, 22:55
If benchmark testing would be that easy, I would have done it. But, it's not. What is a good configuration for one, isn't for others. There are different websites, different users, different machines. Comparing all available webservers on a single machine and do some leeching with 'ab' proves nothing.
Xan
24 October 2009, 21:35
Hi Hugo and others,

I think so that ab performance result could be useful. Yes, Hugo, it's not definitively the best thing to compare web server (overall the features that one has and other has not), but it serves for seeing the performance of the server.

And yes, the configuration is not the same never but if you publish what configuration is used for every server, then the users could compare, and I think it's possitive. Always comparison is good. Just try "nginx vs lighttpd benchmark" in google and you get a lot of results. Is it for some reason? ;-)

So, if you could, please provide ab results.

Regards,
Xan.
Peter
26 October 2009, 13:36
Hi Hugo et al,

Server performance is surely one of the decision making factors when choosing your web server, but trusting google on the performance evaluation does not lead one anywhere. You should perform your own testing up to the millisecond if you prefer within your own server environment.

The most important factor for me, is the perceived performance and usability of my web applications to my customers. For this purpose Hiawatha is working perfectly - haven't noticed any visible difference in look and feel of the applications compared to lighttpd. Hiawatha works well with PHP using php-fpm (alternative for fcgi) and brings the additional security features that some other servers are missing. It is simple to configure, it is documented adequately and the best - it works as documented.

Personally, would not consider returning to an alternative servers as long as the Hiawatha stays up-to-date and I truly hope that Hiawatha will be updated and developed for years to come.

Rgds,
Peter


This topic has been closed.