Ayant déployé récemment Wordpress sur peerweek, j'ai profité de l'occasion pour voir comment celui-ci réagit quand le nombre de billets et de commentaires augmente, va-t'il s'écrouler quand après 100 billets, le temps de login croit-il exponentiellement en fonction du nombre de commentaires ? Le test qui suit va tenter de répondre à ces questions.

Le scenario

La volumétrie des trois tirs représente approximativement le blog à son ouverture (très peu de billets), après une durée de 3 ans avec 3 billets par jours et enfin avec un volume conséquent dépassant de loin l'utilisation prévue.

Le scénario utilisateur comporte 6 actions de base, une lecture courte du blog, une lecture plus approfonfie, une lecture longue, un login dans la partie administration, un accès au flux RSS des billets et enfin un accès au flux RSS des commentaires. Ces 6 actions sont mélangés et jouées de façon aléatoire. La charge est découpée en 2 phases, avec une arrivée à un taux de 0.5 utilisateur par seconde pendant 2 minutes puis pendant 10 minutes à un utilisateur par seconde. Les trois scénarios de lectures commence par un accès à la homepage, puis un accès par une catégorie, la lecture approfondie ajoute la lecture d'un autre billet et accès par un tag, la lecture longue continuant avec des accès sur d'autres catégories et navigation par pagination. Tous les billets sont classés dans 10 catégories et taggé parmi 11 tags.

Les résultats

Pour le dire simplement ils sont bons, voir excellent. La question était Ce test qui a pour but de valider que Wordpress va pouvoir monter en charge et garantir que l'utilisation que j'en aurai sur les années à venir, les temps de réponses ne varient pas quelque soit le nombre de billets et commentaires publiés. Comme on le voit dans le graphique suivant, le 99th percentile reste quasi constant autour de 300 msec.

wppost.png

Pour ce qui est des autres transactions, les temps de réponses pour les lecteurs RSS se maintiennent aussi très bien.

wprss.png

Par contre pour ce qui est du login, c'est horrible on passe de 950 à 970 msec de temps de réponses, je ne sais pas si cela sera supportable d'attendre 20 msec de plus :-)

wplogin.png

Le bilan

Avant de faire le test j'avais prévu d'aller plus loin dans les paramètres à faire varier, faire varier le nombre de catégorie, de tag, regarder le comportement des archives ; mais au vu des premiers résultats je suis rassuré par la stabilité des temps de réponse et vais utiliser Wordpress en étant serein. Un tests rapide comme celui-ci ne prend pas plus d'une journée à réaliser, le plus long étant d'écrire les scénarios, c'est une journée bien utilisée car elle apporte de la serennité pour toutes celles à venir.

Nota bene : il a été nécessaire de hacker légèrement Wordpress pour pouvoir créer un grand nombre de commentaires rapidement, j'ai pour cela désactivé la fonction check_comment_flood_db.