Booster son WordPress avec Varnish 3/4

WordPress Varnish logos

Test n°2 : 40 threads avec Varnish

On lance 40 threads JMeter sur le site en SSL avec Nginx, mais cette fois avec le cache Varnish et avec le plugin de cache WordPress WP Fastest Cache.
Les résultats bruts de JMeter : nombre de requêtes 482 789, 0% d’erreur.

Nombre de threads actifs en fonction du temps

La légende des abscisses indique le jour 09 (Février) suivi de l’heure.
Les 40 threads sont atteints à 23h35. C’est à partir de ce moment qu’on atteint le maximum de la charge.


Les métriques de la VM sont les suivantes. La granularité de l’outil de graphes Munin, utilisé pour ces tests est de 5 minutes.

Nombre de requêtes traitées par Nginx par seconde

Il faut noter l’amélioration du maximum. Dans le scénario sans Varnish on arrive à 170 requêtes/s, ici on monte à 220 requêtes/s.

Nombre de requêtes traitées par Apache par seconde

Apache traite cent fois moins de requête avec Varnish. En fait dans le scénario, il y a une requête dynamique dans le scénario et qui ne peut pas être cachée par Varnish. Elle est toujours passée à Apache. On note également sur les deux graphes précédents, mais on retrouvera ce comportement sur tous les graphes suivants, qu’on bien un plateau identique au plateau de nombre de threads. Contrairement au scénario 1, sans Varnish où la VM ne suit plus les thread de l’injecteur JMeter une fois au maximum. Ce qui confirme la saturation de la VM dans le scénario 1.

Load average : charge de la VM

La charge de la VM n’est pas significative, il ne faut pas tenir compte des petites variations qui sont sous la valeur 0,2.

graphe d’utilisation de la CPU
Nombre de requêtes MySQL par seconde

Les valeurs sont tellement faibles que ce graphe n’est pas significatif. Ici on a des millièmes de requêtes par seconde.

Trafic réseau de la VM en Mbps
Utilisation de la mémoire. Rien à signaler coté mémoire.

Les métriques coté JMeter sont les suivantes. La granularité des JMeter est de 1 minutes, c’est donc beaucoup plus précis dans notre cas que les graphes Munin.

La latence des pages (TTFB) en fonction du temps.

La latence ne varie quasiment pas avec la charge. Il n’y a pas de saturation. On note également une diminution de la latence par un facteur 10 au moins. On voit la capacité de Varnish à cracher du HTTP !

Les temps de réponse des pages en fonction du temps

Même constat, les temps de réponse sont exceptionnels et ne varient pas. Sauf pour la courbe violette correspond à une page qui pèse 10 fois plus que les autres.

Graphes de débit réseau en MBps (octets) par seconde.

Trois conclusions à tirer de ce deuxième test :

  1. Les latences et les temps de réponse sont exceptionnels
  2. Le nombre de requêtes fournies par seconde augmente de 30%, parce que les pages sont servies plus vite.
  3. A 40 threads, la VM n’est pas saturée, contrairement au test précédent qui avait atteint les limites. Les graphes JMeter et Munin suivent le graphe des threads !

On va doit pouvoir pousser le test à 80 threads