bases-mysql

Aujourd’hui, le but pour chaque webmaster est d’obtenir un site le plus rapide et réactif possible. Plusieurs éléments entrent en compte dans le temps d’ouverture des pages d’un site web : le chargement des fichiers, l’exécution des scripts, mais aussi le temps d’exécution des requêtes sur la base de données. C’est sur ce dernier point que nous allons nous pencher aujourd’hui.

L’article est basé sur des résultats de tests effectués sur un site dupliqué sur deux hébergements de type « mutualisé virtuel avec ressources réservées » (appelé « hébergement Premium » chez PHPNET) :

  1. l’un avec une base de données dupliquée sur un serveur de bases de données mutualisé classique
  2. le second sur un serveur de bases de données privé avec ressources réservées (appelé « serveur MySQL Gold » chez PHPNET)

L’intégralité des essais et des observations sont disponibles sur le post original du forum PHPNET

Environnement de test

Les serveurs Web :

Deux hébergements Premium sur deux serveurs hôtes physiquement différents, fonctionnant sur des disques durs SSD.

  • Hébergement 1
  • Hébergement 2

Leur configuration est différente lors du premier essai et devient strictement la même pour le dernier.

Les serveurs de bases de données :

  • Serveur de bases de données mutualisé classique
  • Serveur de bases de données « privé » (ndlr : avec ressources réservées)

Le site web :

Un site Joomla avec VirtuMart, installé par un utilisateur des services PHPNET. Il est décliné en 3 versions pour pouvoir réaliser différentes comparaisons :

  • Site 1 : Site en production
  • Site 2 : Site de développement
  • Site 3 : Clone de Site 1

Outils utilisés :

  • Firefox 39 : navigateur web
  • Firebug : mesure du temps d’ouverture des pages web
  • Terminal : afin de contrôler l’usage des ressources des hébergements et des serveurs de bases de données

Procédure de test :

Les mesures ont été prises sur la page d’accueil du site web, avec l’extension Firebug pour Firefox, dans le réseau interne de PHPNET, pour avoir le moins de perturbations possibles, comme la latence induite par une connexion internet.

Le cache de Firefox est désactivé, pour ne pas avoir de résultats faussés.

  1. Ouverture de Firebug
  2. Ouverture du site à tester
  3. 5 essais de chargement de la page d’accueil, à environ 30 secondes d’intervalles
  4. Surveillance de la charge de l’hébergement et du serveur de base de données utilisé en parallèle.

Les mesures :

Trois mesures ont été effectuées :

Première mesure :

La première mesure est un « constat » de l’existant : les serveurs n’ont pas la même configuration (version de PHP différente) et les sites ne sont pas tout à fait configurés de la même manière.

  • Site 1 sur Premium 1 et base de données mutualisée => 1.56 s
  • Site 2 sur Premium 2 et base de données MySQL Gold => 732 ms

Résultats :

Deuxième mesure :

La seconde mesure compare un clone de Site 1 dans lequel aucun cache n’est activé. Elle permet de se faire une idée de l’importance d’un cache dans Joomla lorsque la base de données est sur un serveur performant .

  • Site 3 sur Premium 2 et base de données MySQL Gold => 900 ms

Résultats :

Les performances de ce clone de Site 1 sont meilleures que ce dernier malgré la non activation du cache dans Joomla, toujours autour de 100 % de gain .

Troisième mesure :

La troisième et dernière mesure est la plus intéressante car elle met en parallèle deux environnements strictement identiques (Site 1 et Site 2 ont la même configuration), mais fonctionnant sur des serveurs de bases de données différents. Site 3 fait office de témoin.

  • Site 1 sur Premium 1 et base de données mutualisée => 1.10 s
  • Site 2 sur Premium 2 et base de données MySQL Gold  => 500 ms
  • Site 3 sur Premium 2 et base de données MySQL Gold => 750 ms

Résultats :

Sur deux sites identiques, mais l’un fonctionnant avec une base de données sur un serveur classique et l’autre sur un serveur « privé », on obtient un gain de plus de 100 %. La différence de résultat sur Site 2 et Site 3 se justifie par une différence de paramètres dans Joomla.

Le serveur de base de données permet ainsi de réduire drastiquement le temps d’ouverture d’une page web (jusqu’à 100 % de gain) . C’est donc un élément à ne pas négliger lorsque l’on souhaite optimiser au mieux l’ouverture des pages Web. Bien sûr cela n’est valable que lorsque les requêtes SQL sont elles-mêmes optimisées.