**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.** # Howto Performances sur une plateforme LAMP Les performances d'une plateforme web, cela signifie : * Un affichage rapide pour vos visiteurs/utilisateurs (critère A) * Une utilisation minimale des ressources de votre infrastructure (critère B) * Une perception performante pour les moteurs de recherche (critère C) ## Au niveau applicatif * Choix du langage ## Au niveau système * Apache/mod_php vs Apache/CGI vs Nginx/FPM ? * Reverse/proxy/cache ### Optimisation de la mémoire de MySQL ### Optimisation des process Apache Apache sera d'autant plus réactif qu'il a des process en mode "idle" prêt à répondre. Pour cela, il faut une méthode empirique : observer les process sur plusieurs jours/semaines/mois avec courbes Munin par exemple, puis ajuster les valeurs pour s'assurer qu'il y a en permanence un minimum de process en mode "idle". Voici un exemple d'optimisation : ~~~ Timeout 10 KeepAlive On MaxKeepAliveRequests 25 KeepAliveTimeout 3 StartServers 50 MinSpareServers 30 MaxSpareServers 50 ServerLimit 250 MaxClients 250 MaxRequestsPerChild 0 ~~~ ### Compression GZIP / DEFLATE Le principe est de compresser les fichiers HTML/Javascript/CSS côté serveur, de les envoyer compressés au navigateur, et le navigateur les décompresse. Avec Apache, cela se fait via le module mod_deflate et avec une configuration du type : ~~~ # OK avec tous la navigateurs (dont MSIE 6, si si) AddOutputFilterByType DEFLATE text/html text/plain text/xml # ...bon, des vieilles versions de MSIE 6 peuvent raler pour ca... AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript AddOutputFilterByType DEFLATE application/rss+xml # On ajoute donc des exceptions : # pour Netscape Navigator 4... BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip # ...mais tout est OK pour MSIE, on exclue de l'exclusion... BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # ...sauf pour MSIE 6 et inferieur, que l'on exclue definitivement (paix a leurs ames). BrowserMatch "MSIE [3456]" no-gzip ~~~ ## mod_pagespeed Nous déconseillons l'utilisation de _mod_pagespeed_ Le problème principal de _mod_pagespeed_ est qu'il est mal codé : en résumé il embarque de nombreuses bibliothèques au lieu d'utiliser celles du système, ce qui pose des problèmes de sécurité, voir ; et qu'il n'est donc pas inclu dans les distributions Linux, notamment dans Debian, voir Deuxième problème avec "mod_pagespeed" il utilise des répertoires de cache partagés entre les différents comptes ce qui est incompatible avec le module Apache-ITK indispensable pour cloisonner les différents comptes sur un serveur. Ce problème nécessite une configuration spécifique avec ModPagespeedFileCachePath à mettre en place dans chaque VirtualHost qui l'utilise. Nous préconisons plutôt l'optimisation du code HTML/JS/CSS/etc. indépendamment de "mod_pagespeed" en appliquant les préconisations via ## Au niveau infrastructure * DNS * Cloud ? * CDN ?