Test de performance d’un Raspberry Pi pour héberger un site internet

Est-ce qu’un Raspberry Pi est assez puissant pour héberger un site internet ? Combien de visiteurs simultanés le Raspberry Pi peut-il supporter ? Au travers de ce test de performance, nous mesurons le temps de réponse du serveur en fonction du nombre de visiteurs simultanés. Enfin, nous déterminerons le trafic mensuel que pourra supporter notre Raspberry Pi.

Quelles sont les conditions de test de performance web du Raspberry Pi ?

Ces tests ont été réalisés avec un ancien modèle de Raspberry Pi. Le site internet est accessible uniquement en local. Le site internet a été développé en Python avec le framework Django et Wagtail. Le site internet est minimaliste, il contient 3 pages avec du texte court.

  • Raspberry Pi 2 Model B Rev 1.1 avec un ARMv7 doté de 4 cœurs (modèle est sorti en février 2015)
  • Stockage : SD Card Scan Disk
  • Base de données : Sqlite
  • Réseaux local : box orange
  • Site web : Python / Django

Comment simuler les visiteurs sur un site web hébergé sur un Raspberry Pi ?

Pour simuler les visiteurs, j’ai utilisé le framework open source Locust. En programmant quelques lignes de Python, on peut facilement simuler la navigation des visiteurs via des requêtes sur les différentes pages du site internet. Locust va ainsi calculer les temps de réponse du serveur pour chaque page. A la lecture des données, on va pouvoir déterminer le nombre maximal de visiteurs simultanés que le serveur web peut supporter.

Résultats de l’hébergement web sur un Raspberry Pi

Dans un premier temps, les tests ont été réalisés sans optimisation. Puis, le serveur web a été optimisé afin d'exploiter l’ensemble des 4 cœurs du processeur ARM.

Test du serveur web sans optimisation

Le temps de réponse médian sur l'ensemble des pages devient supérieur à 1 seconde à partir de 18 utilisateurs avec 2,7 requêtes par secondes. Par contre, le temps de réponse médian de la page du site internet qui contient un article et qui fait appelle à la base de données est de 10 secondes.

Avec 50 utilisateurs simultanés, on atteint 4,2 requêtes par secondes, mais les temps de réponse sont supérieur à 8 secondes. Ce qui n’est pas acceptable.

Les résultats obtenus avec le framework Locust

...
...

Test du serveur web avec optimisation

Pour optimiser la performance de l'hébergement web avec le Raspberry Pi, nous utilisons Gunicorn. C'est un serveur HTTP qui se place au-dessus de l'application Django. Gunicorn va répartir les requêtes transmises au serveur via plusieurs workers. Ils vont permettre à l'application Django de gérer plus de requêtes en même temps. Dans ce test, le nombre de workers est de 4.

Test avec 50 visiteurs simultanés

Avec 50 visiteurs, le serveur est performant. Il traite environ 12,5 requêtes par seconde. Son temps de réponse médian est d'environ 0,59 secondes.

Les résultats obtenus avec le framework Locust

...
...

Que représente un pic de 50 visiteurs simultanés en trafic mensuel ?

Nous allons émettre plusieurs hypothèses afin de déterminer de manière approximative le trafic mensuel :

  • un visiteur passe en moyenne 5 minutes sur le site
  • le site atteint les 50 visiteurs simultanés 3h par jour

Calcul :

  1. (60 / 5) * 50 visiteurs = 600 visiteurs / heure
  2. 600 * 3 = 1 800 visiteurs / jour
  3. 1 800 * 30 = 54 000 visiteurs / mois

Conclusion des tests de performance pour héberger un site web sur un Raspberry Pi

Théoriquement, un Raspberry Pi 2 qui héberge un site web peut supporter un trafic de 54 000 visiteurs par mois. Cette capacité est largement suffisante pour la majorité des sites vitrines d'entreprises ou blog personnels.

Ces premiers tests sont encourageants mais il est nécessaire de les réaliser avec un site internet accessible depuis un nom de domaine. La prochaine étape consistera donc à installer un reverse proxy Nginx et à paramétrer un nom de domaine dynamique.