Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mconf/bbb-jmeter
https://github.com/mconf/bbb-jmeter
Last synced: 20 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/mconf/bbb-jmeter
- Owner: mconf
- License: mit
- Created: 2021-09-10T22:03:13.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-26T16:49:04.000Z (8 months ago)
- Last Synced: 2024-04-26T17:55:57.774Z (8 months ago)
- Language: Groovy
- Size: 204 KB
- Stars: 10
- Watchers: 8
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bbb-jmeter
Jmeter script to load test a BigBlueButton server by stressing the html5-client websocket, this can be useful to test some specific messages and compare performance between changes/versions made to the client to find bottlenecks.Docker based with grafana and influxdb integration to visualize results:
![image](https://user-images.githubusercontent.com/2726293/133854607-2b409a34-b381-4f89-a112-ac4b4c2ad6a8.png)
![image](https://user-images.githubusercontent.com/2726293/133854692-fefe0366-f75e-4ca4-ab10-a3a9d1539e69.png)## What does it do?
- The `test/bbb_23.jmx` script creates a meeting for each line in `test/meetings.csv` and join them with users according to the number of threads defined by `ThreadsOwner` and `ThreadsGuest`.Then, each user/thread:
- Performs the initial default meteor websocket communication and subscribe to all collections;
- Sends a "Hello" message to chat and change the emojiStatus;
- Enter in a loop to send VoidConnection and a Chat Message for `PingLoopOwner` and `PingLoopGuest` times.When the Guest/Viewer loop ends, they leave the meeting.
When the Owner loop ends, they end the meeting.![image](https://user-images.githubusercontent.com/2726293/133846846-159916bd-0620-4c9d-92da-76d0f2a4d1f6.png)
![image](https://user-images.githubusercontent.com/2726293/133843603-019a2371-4a9c-4f63-9c9d-79599df74f8e.png)
## Prerequisites
Docker and docker-compose
## Running
- `git clone https://github.com/mconf/bbb-jmeter.git && cd bbb-jmeter`
- Edit `.env` file:
- Add the `hostname` and `salt` of the server you want to test against
- Configure the threads and ping variables as desired
- Edit `test/meetings.csv` if you want to create more than one meeting (and increase `ThreadsOwner` accordingly)
- format: `meetingName,meetingId,voiceBridge,moderatorUserNamePrefix,guestUserNamePrefix`
- Run `docker-compose up -d`Open http://localhost:30000/ in your browswer to see live results while test is running, the jmeter logs are stored locally in `$LOG_DIR` folder, and metrics data in the `influx-grafana/influx-data`, so the historical data from previous test are kept and browseable in grafana.
- default user/password: admin/admin## Editing test script with Jmeter GUI locally
1. Download latest jmeter https://jmeter.apache.org/download_jmeter.cgi (requires Java 8)
1. You will also need the Webscockets Plugin:
1. Download Jars: https://jmeter-plugins.org/get/ and https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/ (need to extract)
1. Copy the jars to the `lib/ext` folder inside jmeter
1. Open `jmeter.sh`|`jmeter.bat`While editing, to make small tests and debug, disable `Backend Listener` and enable `View Results Tree/Table` to see the exact errors.
##
In your BigBlueButton server, make sure you remove the 3 connections per user.
Edit /usr/share/bigbluebutton/nginx/bbb-html5.nginx, then comment `limit_conn`, and then run `sudo systemctl reload nginx`.
https://github.com/bigbluebutton/bigbluebutton/pull/15977/files#diff-b5ecf26038a7030cd5dda45561b30819cefd6109ae8fc2abbbc0fdae36302fa0R7
If you don't do it, you'll start having errors on Open Connection.## Credits
This work is based on scripts developed by the staff of RNP - Rede Nacional de Ensino e Pesquisa (https://www.rnp.br/en), the Brazilian NREN, in the context of stress testing Conferência Web (https://conferenciaweb.rnp.br/).
##