wiki:Dotclear-Wordpress

Dotclear et Wordpress sous la charge

Environnement de test

Les tests sont effectués sur un Intel(R) Core(TM)2 Duo CPU @ 1.66GHz avec 3Go de RAM, lors des benches seuls les process indispensables tournent sur la machine. Avant chaque bench les environnements sont réinitialisés afin d'avoir le minimum de perturbations extérieures. Au niveau des logiciels, le système est composé de :

  • Debian GNU/Linux Lenny
  • Apache2 (mpm-prefork) : 2.2.8-3
  • MySQL : 5.0.51a-6
  • PHP5 : 5.2.5-3

Pour les benches, nous avons utilisé la version de développement de Tsung, la 1.3.0.

Les versions des logiciels testés sont les dernières versions stables lors des benchs, à savoir :

Le protocole de test

Au niveau logiciel Apache2 et MySQL n'ont pas été optimisés pour la charge, nous avons conservé la configuration par défaut de Debian, cela afin de ne pas avantager l'un ou l'autre des blogs.

Dans les deux blogs nous avons créé deux articles à base de Lorem Ipsum, un premier de 200 mots (1362 caractères) et un second plus conséquent contenant 488 mots (3250 caractères). Pour ce qui est de l'habillage nous avons laissé les blogs tels quels, on verra plus tard que cette partie est exclue du test à proprement parler.

La charge

Nous nous sommes contentés d'une charge assez légère, pour être honnête les premiers benches furent beaucoup plus ambitieux, mais comme nous allons le voir il était inutile de trop *pousser* pour casser, l'un des deux blogs ne tenant clairement pas la charge.

La charge est définie sur 4 périodes de 60 secondes chacune, pendant ces 4 minutes nous allons 'injecter' des utilisateurs suivant un rythme croissant définit comme suit :

  • 1ère minute : 1 utilisateur par seconde
  • 2ème minute : 2 utilisateurs par seconde
  • 3ème minute : 5 utilisateurs par seconde
  • 4ème minute : 10 utilisateurs par seconde

Le scénario

Les deux blogs ont été soumis au scénario suivant, défini en deux types comportementaux différents. La première session correspond à l'utilisateur qui arrive sur le blog et s'intéresse à son contenu, il lit par conséquent des articles. Le deuxième type est l'internaute de passage qui arrive et repart. Nous ne prenons en compte uniquement le contenu de la page générée, à savoir que ne rentre pas dans le bench les CSS (si défini dans un fichier externe) et les images.

  • Première session : probabilité 70%
    • arrivée sur la home
    • lit le premier article en allant sur la page dédiée
    • retour à la home
    • lit le deuxième article en allant sur la page dédiée
    • consulte la page des archives
    • consulte le contenu d'une catégorie
  • Deuxième session : probabilité 30%
    • arrivée sur la home

Entre chaque action il y a toujours un temps de pause (on n'est pas des machines) de durée variable inférieure 3 secondes.

Un peu d'explication: Tsung injecte des pseudo-utilisateurs suivant les intervalles établis, chaque utilisateur est créé dans une session choisie de façon aléatoire en respectant les probabilités définies (70 et 30%). Ensuite l'utilisateur déroule le scénario tel que défini dans sa session. Le bench s'arrête quand tous les utilisateurs ont déroulé l'intégralité de leur session ; ce qui explique que les benches n'ont pas la même durée totale.

Les résultats

À ma gauche Dotclear, et à ma droite ... personne. Nous avons limité la charge max à 10 utilisateurs par seconde et malgré cela WordPress s'écroule irrémédiablement. Nous avons plutôt l'habitude des tests de charges en centaines voir milliers d'utilisateurs d'où notre surprise au résultat de ce bench.

Tous les résultats sont disponibles dans le détail dans source:bench/dotclear-wp/.

Commençons par analyser les deux graphes ci-dessous qui représentent le temps moyen du résultat d'une requête HTTP. Pour Dotclear on se maintient à moins de 200 ms sauf pic de charge au maximum à 700 ms ce qui est largement acceptable. Coté WordPress durant les deux premières minutes (charge de 1 à 2 utilisateur/sec) on se maintient aussi dans l'acceptable, mais dès que l'on arrive à 5 utilisateurs/sec le temps augmente de façon vertigineuse.

DotclearWordPress
source:bench/dotclear-wp/dotclear/images/graphes-Transactions-mean.pngsource:bench/dotclear-wp/wordpress/images/graphes-Transactions-mean.png

Deuxième série de graphes, le nombre d'utilisateurs simultanés. On pourrait facilement se méprendre et croire que l'on a chargé plus WordPress que Dotclear (cela serait mal), en fait le même nombre d'utilisateurs a été injecté lors des deux benches (un peu plus de 1000) ; seulement dans le cas de Dotclear les utilisateurs finissent leur session plus rapidement que pour WordPress. Au final nous avons donc à un instant t moins d'utilisateurs côté Dotclear que WordPress, ce qui se traduit par une charge moindre sur la machine. On voit aussi coté WordPress les deux courbes se séparer, cela traduit des utilisateurs en attente ; attente qui risque de se traduire par un "timeout" si la charge était prolongée dans le temps.

DotclearWordPress
source:bench/dotclear-wp/dotclear/images/graphes-Users-simultaneous.pngsource:bench/dotclear-wp/wordpress/images/graphes-Users-simultaneous.png

Les deux graphes suivant s'analysent assez facilement, à gauche débit max de 3.5 Mbits/sec quand on plafonne à 1 Mbits/sec à droite. De plus on retrouve côté Dotclear le profil de la montée en charge ce qui est plutôt sain.

DotclearWordPress
source:bench/dotclear-wp/dotclear/images/graphes-Size-rate.pngsource:bench/dotclear-wp/wordpress/images/graphes-Size-rate.png

À ce stade il convient tout de même de vérifier que l'on a bien analysé ce à quoi l'on s'attendait. On le voit sur les codes de retours HTTP, côté gauche que du 200 (OK) à un taux max de 48/sec et pour WordPress un violent décrochage une fois encore dans la zone des 5 utilisateurs/seconde.

DotclearWordPress
source:bench/dotclear-wp/dotclear/images/graphes-HTTP_CODE-rate.pngsource:bench/dotclear-wp/wordpress/images/graphes-HTTP_CODE-rate.png

En conclusion

Si vous restez sur des domaines personnels dans vos publications, WordPress sera un outil satisfaisant, mais si vous estimez un trafic soutenu orientez vous plutôt vers Dotclear.


Rodolphe Quiédeville pour Bearstech

rquiedeville -AT- bearstech -DOT- com

Last modified 12 years ago Last modified on Jul 9, 2008, 11:37:21 AM