Benchmark de performance de ColdCMS

Nous avons réalisé des tests de consommation et de rapidité de réponse


À l'approche de la première release officielle de ColdCMS, il était temps de mettre à jour son benchmark de performances.

Nous avons mis ColdCMS à l'épreuve sur deux aspects :

  • l'utilisation du processeur, directement liée à la consommation d'énergie
  • la rapidité de traitement des requêtes par le serveur, c'est-à-dire le temps de chargement des pages

Configuration de test

Les tests ont été réalisés avec docker, dans 2 configurations différentes :

  • Configuration avec un site statique, ce qui est la configuration classique de ColdCMS
  • Configuration sans site statique, appelée site dynamique dans la suite de cet article, qui correspond aux CMS classiques comme WordPress

C'est quoi la différence entre site statique et dynamique ?

Site statique :

  • Nombre de pages fixe
  • La base de données est sollicitée uniquement pour la génération du site lors de modifications de l’administrateur

Site dynamique :

  • Les pages sont générées au moment de la requête client
  • La base de données est sollicitée à chaque requête client
  • Besoin obligatoire d’un langage back-end


Configuration du PC utilisé pour les tests :

  • OS : Ubuntu 18.04.4 LTS 64-bit
  • RAM : 11,4 GiB
  • Mémoire disque : 235,2 GB
  • Processeur : Intel Core i5-5300U CPU @ 2.30GHz×4

Outils de test

  • ab : ApacheBench, outil de test de performance originellement conçu pour les serveurs Apache, mais qui fonctionne avec tout autre serveur HTTP. Il donne entre autres le nombre de requêtes que le serveur est capable de servir par seconde, et le temps de réponse à une requête. Paramètres utilisés :
    • -t (durée du test) = 120 s
    • -n (nombre maximum de requêtes envoyées) = 500 000
    • -c (simultanéité = concurrency) = [1, 2, 4, 8, 16, 32, 64]
  • docker stats : outil de mesure d’utilisation des ressources de conteneurs docker. Il donne entre autres le pourcentage d’utilisation du processeur et de la RAM.

Résultats

Utilisation du processeur

utilisation du CPU en fonction de la simultanéité

Le graphique montre très clairement que le site dynamique sollicite beaucoup plus le processeur que le site statique.

Utilisation de la RAM

utilisation de la RAM en fonction de la simultanéité

L’utilisation de la RAM est près de 3 fois plus importante pour le site dynamique comparé au site statique. Dans le cas du site statique, la RAM sera surtout utilisée lorsque l’administrateur du site web le mettra à jour, et que les pages HTML seront régénérées, mais pas le reste du temps. En revanche, le site dynamique est gourmand en RAM, principalement à cause du back-end Python.

Rapidité de traitement

Nombre de requêtes traitées par seconde en fonction de la simultanéité

Le nombre de requêtes traitées par seconde est très largement plus élevé pour le site statique. Cela s’explique car les pages demandées par le client sont directement disponibles, là où elles doivent être générées par le serveur avant d’être transmises au client dans le cas du site dynamique. L’appel à la base de données et la gestion du back-end rallongent considérablement le temps de traitement.

Utilisation du CPU par requête

Selon nos tests,une requête sur le site dynamique utilise en moyenne 765 fois plus le CPU qu’une requête sur le site statique.

Conclusion

Ce qui ressort donc, c'est qu'un site statique est bien moins gourmand en processeur et en RAM qu’un site dynamique, et également beaucoup plus performant.

Ces données sont très prometteuses pour ColdCMS, qui atteint son objectif de sobriété énergétique, tout en restant très performant.

Pour aller plus loin, ces résultats pourraient être ramenés à des chiffres de consommation électrique, et pourquoi pas de coût de fonctionnement.