blindsidenetworks / scalelite

Scalable load balancer for BigBlueButton.
GNU Affero General Public License v3.0
474 stars 246 forks source link

Breakout rooms should have LOAD_JOIN_BUFFER_TIME=0 #492

Open PhMemmel opened 3 years ago

PhMemmel commented 3 years ago

The new approach of estimating users per session via LOAD_MIN_USER_COUNT for the first LOAD_JOIN_BUFFER_TIME minutes is overall great, thanks for that! However there still is a problem:

Breakout rooms are accounted as normal rooms in this context, so they are "virtually filled" with LOAD_MIN_USER_COUNT users at creation time. Example: Create 8 breakout rooms in a meeting -> this creates a virtual load of 120 users on this machine. However, this should be an estimated load of 15-30 (2*15) users in the first LOAD_JOIN_BUFFER_TIME minutes, as every participant usually only joins one breakout room.

Possible solution: Exclude breakout rooms from this LOAD_MIN_USER_COUNT calculation or, more specific, set LOAD_JOIN_BUFFER_TIME=0 for breakout rooms.

Counting of breakout room users tested on release v1.0.11.

jfederico commented 3 years ago

Thanks @PhMemmel

@amalrails @kepstin you guys implemented this one, do you have comments on this?

kepstin commented 3 years ago

Makes sense. Should be a fairly straightforwards change to do, since the getMeetings call that the poller uses for load determination includes the <isBreakout>true</isBreakout> element on breakout rooms that the logic could be made conditional on.

PhMemmel commented 3 years ago

@amalrails Thx a lot for fixing this.

However, I have one more thought on this: As far as I can see (and just tested on 1.1-beta.4), #503 doesn't set the LOAD_JOIN_BUFFER_TIME to 0 for breakout rooms, but completely removes the breakout rooms from load measuring which is IMHO problematic, especially because of the fact that 2.3 allows up to 16 breakout rooms per default. Usually, breakout rooms are indeed causing load (separate whiteboard, screensharing, usually more people talking/sharing webcams). It's just the LOAD_JOIN_BUFFER_TIME which is problematic.

I would suggest to only remove LOAD_JOIN_BUFFER_TIME mechanism for breakout room, but - except that - count them as regular rooms. This means, the actual amount of attendees in a breakout room should be counted for the load, right from the start of the breakout room.

git-lama commented 3 years ago

@PhMemmel will be updating this soon. Also linked to 197