Info16.fr

Le blog de B@rtounet

#Gnu/Linux

Apache2 VS Cherokee

27 juillet 2011 Rédigé par bartounet

Voilà un petit moment que j'entend parler d'alternative à Apache. Les articles sur la toile parlent de plus en plus d'un petit nouveau qui est cherokee. Sans faire un benchmark détaillé, j'ai voulu savoir ce que donnait ce nouveau serveur Web avec une configuration par défaut. La plupart des serveurs Web des blogger, sont configurés par défauts ou très peu d'options ont été modifiées. C'est pourquoi j'ai voulu savoir si Cherokee n'était pas trop ridicule face au géant Apache. Pour faire mes tests, j'ai voulu mettre les serveur sur un pied d'égalité. J'ai donc crée 2 Machine virtuelles KVM. Vm Apache2 : 2 Vcpus 512 Mo ram Disk Logical Volume LVM2 8Go VIRTIO drivers OS= Ubuntu Server 9.10 X86_64 uptodate Vm Cherokee: 2 Vcpus 512 Mo ram Disk Logical Volume LVM2 8Go VIRTIO drivers OS= Ubuntu Server 9.10 X86_64 uptodate Les deux OS sont rigoureusement identique, puisque c'est un template que j'ai redescendu sur les 2. Les 2 sytèmes sont des copies conformes. Si ca vous interesse voilà la ligne de commande KVM.
kvm -m 512 -smp 2 -net nic,macaddr=00:16:3a:00:00:02,model=virtio -net tap -drive if=virtio,cache=none,format=raw,media=disk -hda /dev/vg0/kvm -vnc :2 -k fr -localtime -daemonize
Installation de Cherokee sur le serveur 1 apt-get install cherokee libcherokee-mod-admin Cela suffit, je ne fais pas de paramétrage. On obtien donc la version de cherokee contenu dans Karmic root@ubuntukvm:~# cherokee --version Cherokee Web Server 0.99.19 Installation de apache2 sur le serveur 2 apt-get install apache2 Cela suffit, je ne fais pas de paramétrage. On obtien donc la version de Apache2 contenu dans Karmic root@ubuntukvm:~# apache2 -v Server version: Apache/2.2.12 (Ubuntu) Nos 2 serveurs sont installés, l'un avec cherokee 0.99.19 l'autre avec apache 2.2.12 Afin de tester les performances des deux serveurs web avec leur configuration par défaut, je vais utiliser l'utilitaire ab (apache benchmark) A partir d'un autre poste de mon réseau, j'installe la suite d'outils pour faire les bench. Avant de commencer, chose importante, je copie le fichier /var/www/index.html du serveur apache, sur le serveur Cherokee. En effet, la page par défaut de cherokee est beaucoup plus lourde que celle d'apache, si bien que cela aurait faussé nos résultas. Commencons par le serveur Apache2 (ip=10.0.0.206) root@laptop:/home/bartounet# ab -n 10000 -c 30 http://10.0.0.206/index.html Explications des options de ab : -n Nombre total de requêtes envoyées -c Nombre de requêtes envoyées en parallèle -H permet de modifier les entêtes http ce qui permet par exemple d'indiquer au serveur http que apachebench supporte la compression gz. J'utilise pour des tests rapides les paramètres suivant : -n 1000 -c 20 Pour des tests lourds : -n 5000 -c 50 Enfin pour avoir des tests vraiment significatifs : -n 50000 -c 30 En augmentant massivement le nombre de requêtes on obtient une moyenne du nombre de requêtes par seconde beaucoup plus significative. ( sources:http://dev.petitchevalroux.net/linux/tester-son-serveur-http-linux.159.html) Voiçi les résultats pour Apache2
Server Software: Apache/2.2.12 Server Hostname: 10.0.0.206 Server Port: 80 Document Path: /index.html Document Length: 177 bytes Concurrency Level: 30 Time taken for tests: 19.476 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 4520000 bytes HTML transferred: 1770000 bytes Requests per second: 513.45 [#/sec] (mean) Time per request: 58.428 [ms] (mean) Time per request: 1.948 [ms] (mean, across all concurrent requests) Transfer rate: 226.64 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 2 22 46.1 21 3022 Processing: 2 35 79.0 23 1588 Waiting: 2 33 73.6 23 1568 Total: 5 58 92.4 45 3045 Percentage of the requests served within a certain time (ms) 50% 45 66% 47 75% 48 80% 49 90% 70 95% 135 98% 302 99% 337 100% 3045 (longest request)
Testons maintenant le serveur Cherokee ( ip=10.0.0.204) root@laptop:/home/bartounet# ab -n 10000 -c 30 http://10.0.0.204/index.html Voiçi sans plus tarder les résultats:
Server Software: Cherokee/0.99.19 Server Hostname: 10.0.0.204 Server Port: 80 Document Path: /index.html Document Length: 177 bytes Concurrency Level: 30 Time taken for tests: 17.133 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 3890000 bytes HTML transferred: 1770000 bytes Requests per second: 583.68 [#/sec] (mean) Time per request: 51.398 [ms] (mean) Time per request: 1.713 [ms] (mean, across all concurrent requests) Transfer rate: 221.73 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 2 27 158.5 18 3025 Processing: 2 24 33.0 20 488 Waiting: 2 23 28.4 19 466 Total: 10 51 161.9 39 3046 Percentage of the requests served within a certain time (ms) 50% 39 66% 42 75% 44 80% 46 90% 49 95% 68 98% 149 99% 307 100% 3046 (longest request)
Déjà à première vue sur ce test, cherokee est plus véloce qu'apache. Passons au test siege. Ici les options signifie : -c : nombre d'utilisateurs -r : nombre de connexion par chaque utilisateur -d : délai en seconde de sleep Ainsi, en lançant siege avec de tels paramètres, je simule la connexion de 100 utilisateurs, exécutant chacun 300 requêtes, espacé de une seconde. Ce qui fait à peu près 30 000 requêtes. ( cf: http://www.tux-planet.fr/benchmark-sur-un-serveur-apache/) Pour le server cherokee siege -d1 -r300 -c100 http://10.0.0.204/index.html Les résultats:
Transactions: 30000 hits Availability: 100.00 % Elapsed time: 178.66 secs Data transferred: 5.06 MB Response time: 0.02 secs Transaction rate: 167.92 trans/sec Throughput: 0.03 MB/sec Concurrency: 3.28 Successful transactions: 30000 Failed transactions: 0 Longest transaction: 3.03 Shortest transaction: 0.00
Pour apache2 voiçi les résultats:
Transactions: 30000 hits Availability: 100.00 % Elapsed time: 187.62 secs Data transferred: 4.18 MB Response time: 0.05 secs Transaction rate: 159.90 trans/sec Throughput: 0.02 MB/sec Concurrency: 8.28 Successful transactions: 30000 Failed transactions: 0 Longest transaction: 3.07 Shortest transaction: 0.00
Encore une fois cherokee est plus véloce. Quand j'aurai le temps de continuerai ce billet en tester les 2 serveurs sur des grosses pages php, telles ques wordpress ou dotclear avec une base Mysql. Encore une fois je le répète mes tests sont réalisés avec les confurations de Cherokee et d'Apache2 par défaut Les connaisseurs de l'un ou l'autre des serveurs auront tôt fait de critiquer ces résultats, et ils auront raison car les améliorations que l'ont peut apporter sont nombreuses. En tous cas, on ne peut pas nier que sur une page html statique légère avec les config par défauts, Cherokee est sensiblement plus performant que Apache.

Information sur bartounet auteur de l'article

2 commentaires

#1 

Bonjour,

J'utilise cherokee sur un de mes serveurs depuis 1 an environ.
Tout roule.
Par contre, la version 0.99 est un peu obsolète.
Tu devrais au moins essayer la 1.0.8. Commentaire de Votre Nom

Répondre

#2 

Bonsoir je viens de tomber par hasard sur ton blog.
Ayant de gros problème de monter en charge avec Apache2
j'ai mis en place Cherokee que j'avais tester il y a bien longtemps dans ses versions 0.9xx.

Pour info mon serveur (auto-hébergé chez moi) est un intel core 2 Duo 2.2Ghz avec 4Go de Ram et 2 disques dur SATA de 500G sous Debian Squeeze 6 x64

Connexion: Download 1.6Mo/s ; Upload 120Ko/s

Celui-ci héberge une plateforme collaborative pour ma classe de BTS basé sur le WebOS eyeOS (voir eyeos.org).

Celui-ci sature avec 20 utilisateurs simultané.
Après vérification 30 processus apache2 lancé.
Je stoppe apache puis le relance service fluide pendant 2/3 mns, puis saturation.

Je vais donc faire le baptême du feu de Cherokee (1.0.8) en production après-demain.

Celui-ci auras comme défit de supporter la monté en charge de 20 connexions simultané et tout ce qui en découle (xx requêtes simultanés pour un même utilisateur).

Je reviendrais poster le résultat qui j'éspère sera en faveur du petit indien ;) Commentaire de Votre Nom

Répondre

Fil RSS des commentaires de cet article

Les commentaires sont fermés.