Retourner à la page d'accueil de TJS
 

Nous avons fait le tour des optimisations dans le code source du site, au niveau SQL et PHP.
Il reste encore toute une partie d'optimisation sur la configuration du serveur (linux dans cet article).
Avant d'aborder quelques pistes pour prolonger l'optimisation (L'idée est toujours la même : supprimer des traitements inutiles), faisons une petite parenthèse sur le choix d'un serveur.

Le cas (de moins en moins) particulier des serveurs dédiés
Pourquoi un serveur dédié
A partir d'une certaine audience, l'hébergement mutualisé n'est plus possible. La limite d'audience est floue : elle dépend de la nature du site, des fonctionnalités installées, du nombre de pages vues, du niveau d'optimisation et surtout de l'hébergeur. Les règles sur l'utilisation CPU sont généralement très vagues et subjectives. Rares sont les hébergeurs qui fournissent des outils pour mesurer la consommation réelle.
Etant donnée l'augmentation générale du nombre d'internautes, de plus en plus de sites se voient dans l'obligation d'acquérir un serveur dédié. N'imaginez pas qu'un serveur dédié peut résoudre tous les problèmes de performances. Même si les temps d'accès sont largement meilleurs, vous n'êtes pas à l'abri de surcharges machines entraînant l'arrêt du serveur. Et comme le serveur est entièrement sous votre responsabilité, l'hébergeur n'a pas d'obligation pour ce genre de plantages.
Les sauvegardes sont aussi à votre charge. Les sauvegardes concernent vos données, vos fichiers sources et le paramètrage de votre serveur. Idéalement, une sauvegarde quotidienne hors du serveur est nécessaire.
Ne vous engagez pas avec un serveur dédié sans connaissances en administration. Dans tous les cas, prévoyez du temps pour gérer le serveur : entre l'application des nombreux patchs de sécurité, le suivi de la charge CPU, le paramétrage des modules, les sauvegardes, les attaques réseaux, les pannes électriques, les pannes matérielles, etc... vous n'allez pas vous ennuyer.
Si vous ne vous sentez pas capable d'administrer votre serveur, optez pour une prestation appelée infogérance, qui vous décharge de toute responsabilité pour un coût très supérieur à la simple location.

Choisir son serveur
Nous avons vu que la plupart des optimisations se font en enregistrant les données en mémoire vive au lieu de les regénérer à chaque appel. De plus, le système d'exploitation linux gère de manière "intelligente" les accès aux fichiers en stockant en mémoire les fichiers les plus souvent accédés.
Le choix d'un serveur dépend naturellement du type de processeur mais surtout de la quantité de mémoire vive.
Une mémoire limitée entraîne un phénomène de swap : la mémoire manquante au système est allouée sur le disque dur générant de très nombreux accès disque, faisant chuter les performances et réduisant considérablement la durée de vie du disque.
Une taille de 256 Mo de RAM est vraiment un minimum. 512 Mo est plus confortable. 1 Go permet d'être complètement à l'aise avec les différents paramétrages.
Le processeur est évidemment important. La différence de performance entre un céléron 2.6 Ghz est un pentium 4 à 3 GHz avec technologie HyperThreading (double processeur virtuel) est vraiment flagrante car les systèmes linux sont conçus pour supporter les multiprocesseurs.
Binghost.com pour vous aider à choisir votre serveur

Avoir un accès total à son serveur ouvre de nouvelles possibilités d'optimisation ! En voici quelques unes facile à mettre en oeuvre...

Optimiseur de code PHP
Le langage PHP est un langage de script. Ainsi, à chaque fois que le serveur doit générer une page PHP, il doit d'abord interpréter le script, puis l'exécuter. Cette étape d'interprétation est particulièrement lourde : lecture des fichiers source, analyse, vérification des erreurs et transformation en pseudo code pré compilé.
Des modules permettant d'éviter cette étape d'interprétation ont été développé.
J'utilise pour ma part PHP Accelerator de IonCube disponible gratuitement à cette adresse.
L'installation est simplissime : un fichier à télécharger et à copier dans le répertoire "extensions" de PHP, et quelques lignes à ajouter dans le fichier php.ini pour configurer le module (espace disque à réserver, durée de vie du cache...)

Il existe d'autres solutions de ce type comme TurckmmCache ou Zend Optimizer.
Le résultat est souvent impressionnant : le temps d'exécution d'un fichier PHP peut être divisé par 10. Cette optimisation est d'autant plus efficace que les fichiers source PHP sont longs.


Désactiver les logs Apache
Les logs apache enregistrent tous les accès sur le serveur via le protocole http. Tous les accès aux fichiers, images, pages accédées par vos visiteurs sont enregistrés. Sur un site avec une bonne audience, cela peut générer des fichiers de log de plusieurs millions de lignes et de plusieurs Go par jour.
Des logs de cette taille sont inexploitables pour repérer les attaques ou les failles de scripts et génèrent de plus des accès disques très importants.
Pour désactiver une log sur un domaine, remplacez dans le fichier de configuration de apache (httpd.conf) :
CustomLog logs/mondomaine.com-access_log combined
par
CustomLog /dev/null combined
et relancez le serveur apache.


Détecter les aspirateurs de site
Une source importante de consommation CPU peut provenir des aspirateurs de sites.
Il n'existe pas de solution miracle pour interdire les accès d'aspirateur. Il ne faut pas non plus être trop strict pour éviter de bloquer l'accès au robot d'indexation des moteurs de recherche.
La solution la plus basique est de créer un fichier .htaccess à la racine du site à protéger qui va interdire les accès à tous les robots ayant un user-agent connu comme étant celui d'un aspirateur. Ce n'est évidemment pas complet comme solution, mais une bonne partie des aspirateurs seront refoulés malgré tout !
RewriteEngine ON RewriteCond %{HTTP_USER_AGENT} .*Advanced\ Email\ Extractor* [OR]
...
RewriteCond %{HTTP_USER_AGENT} .*Wysigot* [OR]
RewriteCond %{HTTP_USER_AGENT} .*HTTrack* [OR]
RewriteCond %{HTTP_USER_AGENT} WebWhacker
RewriteRule .*$ http://www.urlderedirection.com [R,L]




Cet article est maintenant terminé.
J'espère qu'il vous permettra d'optimiser votre code et votre site, pour le rendre plus rapide !

N'hésitez pas à me signaler tout complément qui pourrait intéresser les lecteurs.

Chercher une fonction, un objet, ...

Le 24/11/2017 14:02:13 sur php7 en 12.15 ms