Hello guys,

A couple of mails hit the mailing list showing unusual benchmarks  
results. I must admit that, at the beginning I didn't pay too much  
attention to them.. but, since there are people discussing the topic  
on IRC and doing new benchmarks I'd like to shed some light on it.

As you guys know, Cherokee and Apache architectures have nothing to do  
with each other. I'm must admit I'm surprised of the great work the  
Apache httpd guys have done fixing and refactoring the NCSA web server  
source code (which is around 16 years old).

The newest Apache versions support different server cores (MPM):  
prefork, worker, etc. Each one of these core types has different  
properties: "worker" uses threads so it's fast, but it doesn't work  
with some of the most spread Apache modules: mod_php, for instance.  
"prefork" works with all the modules, although it's performs poorly.

So, let's do a quick benchmark. Since most of you guys use Ubuntu,  
I've used it for the benchmark as well. By default, Ubuntu installs  
the "MPM-Worker" core (until some of the extension modules is  
installed). In that environment, the benchmark showed Cherokee being  
slightly faster (~4%):

=========================
Cherokee 0.99.21b:
Threads: 20, Keepalive, Requests: 183532 (9644.9 reqs/s), Bytes:  
304.47M, Errors: 0

Apache/2.2.11 (Ubuntu):
Threads: 20, Keepalive, Requests: 187521 (9291.1 reqs/s), Bytes:  
314.62M, Errors: 0
=========================

It isn't much.. but it's something. However, you must be aware for a  
couple of differences:

1.- Cherokee used 4.5Mb of RAM while Apache used ~52Mb: That's only a  
8.4% of the memory!!
2.- The Apache version was incompatible with many for its own modules  
(because of threading issues).

So, let's perform what is the default Apache installation in most of  
the cases. At least we need to install the PHP module:

   # apt-get install apache2 libapache2-mod-php5

In this case, the server will use MPM-prefork. The new benchmark  
showed a hard to ignore performance decrease. Now Cherokee is 37%  
faster.

=========================
Threads: 20, Keepalive, Requests: 143808 (7100.7 reqs/s), Bytes:  
208.06M, Errors: 0
=========================

However, in this case, there's something really important to bare in  
mind: The server will use a whole lot of system resources. It has to  
fork() many times and that's slow.. and besides that, it will use a  
considerable amount of memory on each one of its child processes. It  
used +100Mb of RAM on this tiny benchmark, while Cherokee used 4.5Mb.  
Besides, the general system load raises because of the higher process  
number (and therefore, process switches).

(By the way, I did also run the test against lighttpd just to give you  
another additional reference. Cherokee was faster as well. So it isn't  
that Cherokee's got slower..)

The bottom line is: Apache is doing better regarding to performance on  
light benchmarks of static content. However, Cherokee is still faster  
and consumes way less resources, which makes it scale much better on  
high traffic situations (and VPS without tens of Gb of memory).

Even if this short mail doesn't get into much detail, I hope that at  
least it helps to clarity things a little bit. :-)

Cheers!


PS: Since this topic has attracted lot of interest, I'll try to  
allocate some time to do proper benchmarks (including static and  
dynamic content, VPS, high load/concurrency, etc).

--
Greetings, alo
http://www.alobbs.com/
_______________________________________________
Cherokee mailing list
[email protected]
http://lists.octality.com/listinfo/cherokee

Reply via email to