Faire un stress-test sur BigBlueButton

 
logo-BigBlueButton-BBB

Aujourd'hui je vais vous présenter un outil pour tester la robustese de votre serveur BigBlueButton. Il n'y a rien de plus fastidieux que de demander à tant de personnes de venir dans votre salle pour voir si le serveur tient la route pour la prod'...

C'est pourquoi j'ai trouvé un projet GitHub qui résout ce problème. Et ce projet, c'est tout simplement bbb-stress-test. Il appelle l'API de BigBlueButton (grâce à l'URL et au secret) pour créer une nouvelle session et créer des utilisateurs.

1. Installation

L'installation se fait traditionnellement sur le même serveur que le serveur BigBlueButton, mais il est possible de le lancer depuis un poste tiers (non testé).

Cloner le projet GitHub :

git clone https://github.com/openfun/bbb-stress-test

Démarrer le build du projet :

cd bbb-stress-test
make bootstrap

Un fichier .env va être créé par la suite dans le dossier bbb-stress-test. Adapter son contenu :

# BBB URL and secret can be retrieved by running bbb-conf --secret on the BBB server.
BBB_URL=https://BBB_Server/bigbluebutton/
BBB_SECRET=ebohv5eiwab0Au8up5zoo4yeichu9EiJoh5t

# Meeting ID can be retrieved by running `make list-meetings`
BBB_MEETING_ID=q9vg4fwfbnl5dghd2vkykaprnxksncejnxugaqiz

# Test parameters
BBB_TEST_DURATION=60
BBB_CLIENTS_LISTEN_ONLY=3
BBB_CLIENTS_MIC=2
BBB_CLIENTS_WEBCAM=10

Pour la première partie, l'URL et le secret s'obtient avec la commande bbb-conf --secret.

Pour le Meeting ID, obtenir son identifiant avec la commande make list-meetings.

Enfin, la dernière partie est à adapter en fonction de vos besoins :

- BBB_TEST_DURATION : Durée totale du test (en secondes)
- BBB_CLIENTS_LISTEN_ONLY : Nombre de participants en écoute seule (sans caméra ni micro)
- BBB_CLIENTS_MIC : Nombre de participants en micro
- BBB_CLIENTS_WEBCAM : Nombre de participants en caméra

Après avoir renseigné tous ces paramètres, vous pouvez démarrer le test avec la commande suivante :

make stress

Si on démarre le process en tant que root, alors il faut ajouter ceci dans ./lib/stress-test.js, en dessous de "--mute-audio" :

"--no-sandbox",

2. Utilisation

Maintenant, vous pouvez observer l'état de votre serveur à l'aide par exemple de Grafana (par exemple pour les courbes de l'utilisation du CPU ou de la RAM).

Test 0 : Avec 0 participants

Test 1 : Avec 3 clients en sourdine, 2 en micro et 2 en caméra

Test 2 : Avec 6 clients en sourdine, 4 en micro et 4 en caméra

Test 3 : Avec 6 clients en sourdine, 10 en micro et 10 en caméra

Test 4 : Avec 6 clients en sourdine, 20 en micro et 20 en caméra

Bon, on ne va pas vous le cacher, c'est à ce moment là que notre serveur (8 Go de RAM et 4 CPUs, et de multiples processus en arrière-plan) a souffert 😉 ! Mais soyons quand même étonnés que les résultats sont très satisaisants pour les modestes capacités.

La vidéo simulée par le processus est un cercle jaune qui bouge en permanence, ainsi vous pourrez évaluer la fluidité au fur et à mesure du nombre de participants.

En conclusion, vous pouvez évaluer le nombre de participants potentiels en fonction de vos composants matériels. C'est très pratique pour tester votre serveur avant une session qui va accueillir du monde.