Wordpress sur une part Gandi en mode turbo
le 29 octobre 2009 à 12:50 par mrbooCe 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.








29 octobre 2009 à 14:09
Merci pour ce retour d’expérience.
Maintenant il serait intéressant de voir l’équivalent en perf sur un RPS1.
Je ne souhaite pas défendre le RPS, mais pour la culture c’est vraiment intéressant ce genre de retour.
En effet, si tu mets tout en RAM, le meilleur CPU ainsi que la quantité de RAM (512mo) d’un RPS1 serait peut être d’une grande aide.
Il te reste un peu de temps sur ta location ?
29 octobre 2009 à 14:12
Bah là, la vitesse d’affichage de ton blog est juste sidérante !!
Moi qui bataillais avec mon wp, wp super cache et ma dedibox, je crois que je vais gouter à ta recette miracle en testant eaccelerator et memcache.
Merci !
29 octobre 2009 à 14:32
Julien> je vais essayer de trouver le temps ce soir.
sid> sinon tu peux juste changer le répertoire de wp-super-cache ($cache_path dans /wp-content/wp-cache-config.php) par un répertoire en ram (cf le lien dans mon billet)
ça devrait déjà donner un bon coup de fouet.
29 octobre 2009 à 16:35
La vitesse est bluffante effectivement.
Deux choses. Pourrais-tu donner les modules Apaches que tu as gardé (ou bien ceux que tu as viré) ?
Et si possible le gain de temps que tu as gagné via cette technique (c’est à dire le gain de temps déjà gagné à cette étape).
Merci d’avance !
29 octobre 2009 à 16:52
Louis>
J’ai gardé :
alias
auth_basic
authn_file
authz_default
authz_groupfile
authz_host
authz_user
autoindex
deflate
dir
env
expires
headers
mime
negotiation
php5
rewrite
setenvif
status
Le gain n’était pas ultra flagrant (surtout les relevés étaient erratiques) je dirais ~10%
29 octobre 2009 à 21:34
Je tourne sur la même config mais avec eaccelerator + wp-supercache. Tu lui a mis quelle taille à ton cache ? Pour wp-supercache, j’ai 6-7Mo mais pour eaccelerator j’ai beaucoup plus (mais je n’utilise pas que wordpress aussi comme appli PHP)
29 octobre 2009 à 22:31
« Apache2 est un serveur très modulable (d’où son nom) mais son défaut vient de sa lourdeur »
Techniquement le problème c’est plutôt WordPress
30 octobre 2009 à 0:04
Philippe> j’ai mis 16 Mo pour le ramdisk et 8 Mo pour memcache.
30 octobre 2009 à 0:16
@mrboo : merci pour ta réponse. Je suis d’avis que (comme tu l’as dit), allier wp-supercache à un ramdisk commence déjà à bien décrasser l’apache, mais encore faut-il avoir accès a la RAM (foutue offre clef-en-main
).
21 novembre 2009 à 14:30
Bonjour,
Moi, je n’y arrive pas…
Un AB me donne de pauvres résultats sur une part Gandi. J’ai installé memcached et APC qui utilise un ramdisk de 32M. Je suis parti d’une install clean Debian, j’ai le minimum de modules Apache et surtout ceux qui vont bien (expires, deflate, gzip, …).
Côté site web, MySQL est très peu sollicité, les requêtes étant « memcachés ». Plus tout un tas d’optimisations (j’ai dailleurs un billet à ce sujet), le temps de réponse est très satisfaisant puisque l’affichage complet du site est très inférieur à 0,7s.
J’en conclue que le problème se situe au niveau d’Apache mais je comprend pas. Il ne donne jamais plus de 2 requests per second… Initialement j’étais bien comme toi, à 0,7 requests/s. Des pistes à explorer ?
Merci d’avance.
23 novembre 2009 à 11:13
William DURAND> est-ce que dans la conf de w3-total-cache le test de memcache passe ? de plus, dans le code source de ton blog rien ne semble indiquer que le plugin fonctionne.
avec 0,7 requests/s tu peux être certain que le cache n’est pas en place.
23 novembre 2009 à 12:15
Bonjour,
memcached est bien en place, j’ai des logs qui me l’indique (je vérifie également les logs mysql). Deuxième chose, je n’utilise pas Wordpresss, j’ai ou-même developpé l’architecture. Le soucis n’est, selon moi, pas là…
Je pense avoir un soucis Apache2, en mettant keepalive a off, je passe a 7 requests/s.
Ce que je ne comprend c’est la grande différence entre tes résultats et les miens ainsi que mes temps entre une exécution et 5 exécutions en concurence…
23 novembre 2009 à 12:44
William DURAND> est-ce que le phpinfo t’indique bien la présence du module php memcache ? et si tu fais un test via les fonction php memcache->get / set ça fonctionne ?
23 novembre 2009 à 13:04
Oui tout est ok.
50% des requêtes sont rendues en 15000ms… Mais en surveillant mes processus, ni le CPU ni la Ram ne sont saturés outre mesure.
18 décembre 2009 à 19:47
Saluté !
pour Noel
ce serai vraiment super cool !
mais c’est super tentant tout ça !
Et pour un petit noob que je suis un tuto serait vraiment bienvenue !!
vi vi
héhé
merci@++
21 décembre 2009 à 9:56
Merci pour les infos.
Je plussoie pour le tuto…

Et je pense même que ça vaut le coup de rajouter une info dans le wiki ou le forum Gandi…