Analyse de performance et d’optimisation des 1000 sites les plus visités

Disponible sur une page permanente de GTmetrix, on retrouve le top 1000 des sites ayant la meilleure note pour des tests de rapidité : Performance and Optimization Analysis of the Top 1000* Sites.

GTmetrix est un service en ligne qui analyse plusieurs facteurs (vitesse de chargement, compression, etc.) pour affecter une note à un site.

Performance et optimisation des 1000 sites les plus visités dans le monde

Par exemple, on peut accéder au rapport pour Facebook. Celui-ci est tout à fait relatif, car le bot ne peut accéder qu’à la page d’accueil statique (puisqu’il n’est pas connecté) pendant la prise de mesure.

Performance et optimisation de Facebook via GTmetrix

Le classement des 1000 premiers sites se base sur le classement de Double Click Ad Planner, dont je parlais récemment.

En vrac #60

Revue de presse hebdomadaire par Romain DECKERAu départ prévue pour stocker des liens que je jugeais intéressants, la revue de presse hebdomadaire me permet de partager mes découvertes avec vous. Pour cette 60ème édition : résolution d’écran, des belles photos, le résultat de l’enquête sur les blogueurs francophones, et une comparaison entre le cerveau humain et la puissance informatique totale dans le monde.

Optimisez les performances de votre site avec Memcached

Parmi toutes les optimisations possibles pour un blog, un site ou une application, on retrouve Memcached qui se positionne comme un système de cache d’objets distribué et non répliqué. Initialement développé par Danga pour Livejournal, c’est un outil open source qui est maintenant utilisé par de nombreux sites (Facebook, Youtube, mon blog, Flickr, etc.)

J’utilise Memcached sur le serveur de mon blog depuis quelques mois, et la différence avec/sans est assez flagrante.

Memcached : système de mise en cache d'objets

Logo MemcachedPour comprendre son utilité, je rappelle simplement que les temps d’accès à la mémoire vive d’un serveur sont nettement supérieurs à ceux d’un disque (nanosecondes VS millisecondes, cad un ratio compris entre 10 000 et 100 000).

C’est là que Memcached intervient. Il va créer des tableaux de données en RAM : cela va contribuer à réduire le nombre de fois qu’une même donnée stockée sur un périphérique de stockage mécanique est lue.

La principale chose à comprendre avec Memcached est qu’il s’agit d’un système d’usage général, et que les applications doivent être « conscientes » de sa présence. Ce n’est pas quelque chose de magique, qu’il suffit d’installer pour multiplier les performances par 10. Il faudra a minima installer un plugin si vous utilisez un CMS, voire repasser dans une partie du code.

Sous forme d’architecture client-serveur, Memcached se présente comme un démon qui écoute par défaut sur le port 11211. Le système créé des tableaux dont les clés de 250 octets pointent vers des valeurs qui peuvent avoir jusqu’à 1 Mo (mégaoctet). Si la quantité de mémoire allouée est pleine, les clés les plus anciennes sont supprimées (méthode Least Recently Used). Comme les données sont stockées en RAM, elles seront perdues si le serveur redémarre.

Il est possibles d’utiliser plusieurs instances Memcached. Par exemple, une application ABC peut mettre des données en cache sur 3 serveurs différents :

  • memcached1.monappli.com
  • memcached2.monappli.com
  • memcached3.monappli.com

Chaque serveur sera autonome et ne communiquera pas avec ses voisins.

Architecture Memcached : isolation des serveurs

Il est possible de répliquer des instances Memcached, mais ceci est une autre histoire ! :)

Un grand nombre de librairies clientes pour accéder à Memcached sont disponibles : C/C++, PHP, Java, Windows/.Net, Ruby, Perl, etc.

Performances : avec / sans Memcached sur un WordPress

Pour vérifier le gain de performances, j’ai utilisé un serveur de test, avec une installation de WordPress vierge. J’ai fait un test de charge avec ApacheBench, avec et sans Memcached activé.

Benchmark :

  • WordPress sans Memcached : 8,75 requêtes / secondes,
  • WordPress avec Memcached : 150 requêtes / secondes.

Nb : il s’agit d’une installation d’Apache2 avec un paramétrage par défaut sur une CentOS 5.5 32 bits, 1 vCPU 2 Ghz, 512 Mo de Ram.

En conclusion, Memcached est un élément non négligeable qu’il est bon d’intégrer dans la conception d’une application. Cependant, comme c’est une couche d’intégration supplémentaire, il faut faire en sorte que l’application soit consciente que système existe.

Je reviendrais plus tard sur l’installation de Memcached…

Utiliser un disque SSD comme disque système

Nouvelle année, nouveau système : j’ai troqué un disque SATA contre un disque SSD. Il s’agit d’un OCZ Vertex 2 d’une capacité de 120 Go, où j’ai pu ()installé Windows 7 sur mon PC fixe.

Les disques SSD ont fait leur apparition il y a peu de temps mais se démocratisent de plus en plus, que ce soit pour les particuliers ou sur du stockage d’entreprise. Malgré les prix encore un peu dissuasifs, leur principal avantage est qu’ils offrent de bien meilleures performances, et ce à tout point de vue :

  • temps d’accès réduits : ~0,1 ms (millisecondes) contre plus de 10 ms pour un disque SATA,
  • bande passante : entre 200 et 250 Mo/s,
  • IOPS (I/O par seconde, cad le nombre d’opération par seconde possible) : plusieurs milliers, voire dizaine de milliers d’IOPS par disque !

Lors de leur apparition en 2007/2008, la technologie étant encore un peu balbutiante, et les disques n’arrivaient pas du tout à ce niveau de performance.

SSD signifie Solid State Drive, c’est-à-dire « disque à état solide » : ce nom provient du fait qu’ils sont constitués de mémoires à semi-conducteurs à l’état solide. En comparaison à un disque habituel :

  • le système de plateaux rotatifs et de son/ses bras de lecture ont disparu, au profit des puces mémoires : l’usure mécanique disparaît,
  • les disques SSD sont plus résistants aux chocs (toujours pour la même raison),
  • ils sont très silencieux (plus de pièces en mouvements) et dégagent très peu de chaleur.
Disque SSD OCZ Vertex 2 SATA II 3,5"

Disque SSD OCZ Vertex 2 SATA II 3,5"

Cependant, il n’y a pas que des avantages : en effet, les performances d’un SSD se dégradent fortement avec le temps. La commande TRIM est censé régler ce problème, mais ce n’est pas toujours le cas.

Par ailleurs, en comparaison à des disques « normaux » où les données sont inscrites électro-magnétiquement, les disques SSD peuvent perdre des données s’ils ne sont pas mis sous tension pendant quelques mois d’affilé (les premiers tests parlent de 3 mois).

Enfin, pourquoi continue-t-on à les appeler « disques« , alors qu’il n’y a plus aucun matériel rotatif à l’intérieur de ceux-ci ? :)

Analyser les performances d’une page web avec Load Impact

Précédemment dans 24h, on avait vu comment faire des tests de montée en charge de votre site web : on avait utilisé pour ceci, une application externalisée qui s’appelle Load Impact.

Load Impact propose aussi une analyse de vitesse de vos pages web, un peu comme GTmetrix et Pingdom Full Page Test.

Analyser les performances d'une page web avec Load Impact Page Analyser

Il est intéressant de noter que vous pouvez émuler des navigateurs différents (Chrome, Firefox, Internet Explorer, Opera, Safari) pour faire le test.

Pour analyser vos pages web : Load Impact Page Analyser.

Boostez votre serveur Apache avec mod_pagespeed

L’extension PageSpeed pour Firefox/Firebug permet d’évaluer les performances des pages web et prodigue des conseils pour optimiser la vitesse de celles-ci.

Cette semaine, c’est un module pour Apache, mod_pagespeed, qui vient compléter ce panel d’outils. Mis à disposition par Google (gratuitement, sous licence Apache), il est encore en version beta mais permet déjà des résultats visibles.

Comme je suis curieux, je l’ai installé sur mon serveur (qui était déjà optimisé depuis quelques semaines).

NB : pour l’installer en toute sécurité, j’ai fait un snapshot de mon serveur dédié (merci VMware ^^), au cas où ! :)

Je grapille 1% au test Page Speed sur GTmetrix, notamment avec quelques petites améliorations dans les points suivants :

mode_pagespeed : résultat au test gtmetrix

Cependant, sur certains points les performances diminuent : comme quoi, la solution magique n’existe pas, et simplement activer un module sur votre serveur ne fera pas forcément des miracles si vos applications n’en sont pas conscientes.

Pour la configuration, vous trouverez des informations par ici, ou ailleurs sur l’Internet Mondial (qui va être beaucoup plus rapide maintenant) ! ;)

La news est sur le blog Webmaster Central Blog.