Apache2 VS Cherokee
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: 80Document Path: /index.html
Document Length: 177 bytesConcurrency 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] receivedConnection 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 3045Percentage 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: 80Document Path: /index.html
Document Length: 177 bytesConcurrency 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] receivedConnection 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 3046Percentage 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.



Bonjour,
merci pour ce billet fort intéressant. Il est démontré que lighty, cherokee et nginx sont plus rapide qu’Apache pour du contenu statique : ce test le démontre de même.
A quand le test avec de grosse page PHP comme mentionné ? Cela m’intéresserait beaucoup (avant de faire un choix de serveur web justement).
cdt
futurevps