diff --git a/server/config/config.example.js b/server/config/config.example.js index 5b47582..9d27f11 100644 --- a/server/config/config.example.js +++ b/server/config/config.example.js @@ -247,10 +247,11 @@ module.exports = // When truthy, the room will be open to all users when as long as there // are allready users in the room activateOnHostJoin : true, - // When set, maxUsersPerRoom defines how many users can join a single room. If not set, there is not limit. + // When set, maxUsersPerRoom defines how many users can join + // a single room. If not set, there is no limit. // maxUsersPerRoom : 20, // Room size before spreading to new router - routerScaleSize : 20, + routerScaleSize : 40, // Mediasoup settings mediasoup : { diff --git a/server/lib/Room.js b/server/lib/Room.js index ec8febf..1d30944 100644 --- a/server/lib/Room.js +++ b/server/lib/Room.js @@ -31,7 +31,7 @@ const permissionsFromRoles = ...config.permissionsFromRoles }; -const ROUTER_SCALE_SIZE = config.routerScaleSize || 20; +const ROUTER_SCALE_SIZE = config.routerScaleSize || 40; class Room extends EventEmitter { @@ -48,6 +48,9 @@ class Room extends EventEmitter { logger.info('create() [roomId:"%s"]', roomId); + // Shuffle workers to get random cores + let shuffledWorkers = mediasoupWorkers.sort(() => Math.random() - 0.5); + // Router media codecs. const mediaCodecs = config.mediasoup.router.mediaCodecs; @@ -55,7 +58,7 @@ class Room extends EventEmitter let firstRouter = null; - for (const worker of mediasoupWorkers) + for (const worker of shuffledWorkers) { const router = await worker.createRouter({ mediaCodecs }); @@ -74,6 +77,7 @@ class Room extends EventEmitter }); firstRouter = null; + shuffledWorkers = null; return new Room({ roomId, mediasoupRouters, audioLevelObserver }); }