Jitsi-Meet Torture/Load Test with Docker and JWT
General
To test your Jitsi-Meet Performance there are many differnt ways to perform a perfomance test.
The best way is to test choosing a browser based test, but it´s not that easy to find some collegues or friend to test you jitsi-meet server in a propper way.
So we build up a new test environment which also works with jwt authentication. This is not working in a lot of other jitsi-torture tests. You can als add bots to your conference which you are already in.
So first we need to install docker and docker-composer on our server. We recommend to use a linux server, not windows, because the torture test will take a lot of performance. We take some steps from the original post https://meetrix.io/blog/webrtc/jitsi/jitsi-meet-load-testing.html
Clone Repository
We create a fork with some changes to trigger specific urls including JWT. You can use clone this repository to perform the test. https://github.com/holema/jitsi-meet-torture
In the first step, you have to clone the repository on our local host and jump into the directory
mkdir /tmp/jitsi-torture && cd /tmp/jitsi-torture
git clone https://github.com/holema/jitsi-meet-torture.git
cd jitsi-meet-torture
This can take some while bcause we deliver all the sounds and videos for the test.
Requirements
When cloning the repository is finished we have to build the special docker image we use for the test. You need to have docker and docker-compose installed on the host. This depends on you OS and is not descriped here.
Docker build
After installing Docker Compose on your system run docker build to build the custom image
docker-compose build
This command will build a new docker image which is used to setup the test with docker.
Docker compose and scale the number of participants
For setting up the test infrastructure, it important to understand, that every docker container creates one participant which will later join the conference. So you have to create as many docker containers as you want. Here we work with two docker container
docker-compose up -d --scale node=<AMOUNT OF NODES>
This will now download the rest of the images wich are shown in the image above.
After this step, the infrastructure is ready and you can start the tests inside the containers.
Show all containers
When your setup is created correctly you can start with testing and torture your jitsi-meet server. To perform a test you first check if your infrastructure is up.
To see all your running docker container enter:
docker ps
The output should be something like this with all your containers listed with a number (postfix).
Run the test
When all your conatiners show the Status UP you can start.
Here you just type the following command:
docker exec jitsi-meet-torture_torture_1 ./scripts/malleus.sh --conferences=1 --participants=<AMOUNT OF PARTICIPANTS> --senders=<AMOUNT OF VIDEOS STREAMS> --audio-senders=<AMOUNT OF AUDIO STREAMS> --duration=<DURATION IN SEC> --room-name-prefix= --hub-url=http://hub:4444/wd/hub --instance-url=<ENTER HERE YOUR JITSI CONFERENCE URL ALSO WITH JWT IF YOU USE ONE>
- --conferences: here the number of conferences. The torture agounst a specific room only works when this is set to 1
- --participants: amount of participants which should joint the room. this must be smaller or equal the nodes
- --senders: amount of how many participants send a video
- --audio-senders: amount of participants sending a audio
- -- duration: how long sending the torture in sec (600 = 10min)
- --hub-url: leav as it is
- --instance-url: Here you should enter your specific room to test (ex. https://meetexample.com/myroomtotest). If you use a jwt authentication set the url with your JWT token (ex. https://meetexample.com/myroomtotest?jwt=ey........)
This will now start the Torture test agains the configured URL.
Here you can see a room which is protected with a JWT token and the torture video streams.
Shutdown test environment
To shutdown the complete infrastructure enter the following command:
docker-compose down
Hint
You need a lot of CPU, Memory, and Network Ressources to performe the tests. Otherwise, your test infrastructure will collape and will not test the performance of your Jitsi Meet Server.
Support
If you have questions or need support with testing the performance of your Jitsi Meet Server, you can send us an Email.