WordPress sur une part Gandi en mode turbo

Ce blog tourne sur une unique part de serveur Gandi VPS.
Lors de l’installation (hier) mon billet a été relayé sur Twitter, ce qui a entrainé l’arrivée, d’un coup, de quelques dizaines (centaines ?) de visiteurs => Apache a lâché l’affaire et j’ai eu le droit à des erreurs dans les logs liées à la surcharge.

Certes, une part Gandi ça représente l’équivalent d’un CPU à ~1Ghz avec 256Mo de ram (bust à 2Go) et comme nous l’avons vu les accès disques sont relativement rapides.
Alors d’où venait le problème ?
Apache2 est un serveur très modulable (d’où son nom) mais son défaut vient de sa lourdeur: la moindre page de ce blog lui demande 20Mo de mémoire et 20% du processeur de la machine.
Trop d’accès simultanés, Apache met de plus en plus de temps à générer les pages, l’ensemble des ressources mémoire et CPU sont trustées => Apache se met en vrac, page blanche sur le serveur…

Pour avoir une petite idée de la réactivité de votre Apache une simple ligne de commande :
ab -n 200 -c 5 http://www.url_de_votre_site.fr/
Hier soir, dans la conf Gandi par défaut il m’annonçait qu’Apache réussissait à générer 0,7 pages par seconde (c’est trop peu)
J’ai donc mis les mains dans le cambouis (je n’ai pas trouvé le courage de passer à un serveur léger comme nginx).

1- GandiAI ajoute à la conf de chaque domaine (/etc/apache2/sites-enabled) une ligne pour limiter la consommation CPU via mpm_peruser_module. C’est dommage car même si on augmente le nombre de parts Gandi, le serveur semble malgré tout bloquer le rush de visites… (j’ai testé hier avec 16 parts Gandi -> page blanche)
(je l’ai donc supprimé)
2- Je n’ai gardé que les modules Apache nécessaires à mon WordPress (désactivation un à un avec un refresh du blog à chaque fois).
3- J’ai ensuite installé eaccelerator, en utilisant un ramdisk pour stoker son cache, histoire de booster PHP/Apache2
4- J’ai installé memcached avec son plugin pecl pour PHP5
5- Enfin j’ai installé w3-total-cache en lui demandant d’utiliser memcache.

Résultat des courses, le benchmarck d’Apache m’annonce désormais 115 pages par seconde :)
Ce qui donne un apache 164 fois plus réactif…

Bien sur cela ne concerne que la partie Apache, si 500 personnes demandent 500 pages de ce blog d’un coup il est très probable que la base MySQL ralentisse le tout et que la bande passante (5 Mb garantis) n’arrange rien.
Mais pour un dédié virtuel à 15€/mois ça me semble acceptable ;)
Il ne reste plus qu’à voir la stabilité du tout, mais ça, seul le temps nous le dira.

nasa