Hello folks,
We’re qualifying our platform’s live classrooms on OpenVidu 3.8 and need your help choosing the engine and sizing our media servers.
Your documentation gives two capacity figures we would like to understand:
-
One publisher and 1,000 viewers in a single room on a four-CPU server. Scalability documentation
-
Nearly twice the participant/track capacity with mediasoup versus Pion in your multiple-room benchmark, using eight participants per room. Performance benchmark
Our classroom workload is different:
-
One room with 100 students and two teachers.
-
Two teachers and one student each publish camera, screen, microphone and screen audio; the remaining students watch; equivalent to 100*6 = 600 streams.
-
Three 640×360 cameras and three 1920×1080 screens, with actual sources running at approximately 15fps.
-
Recording enabled on the media node.
-
DigitalOcean Regular CPU-Optimized server: four dedicated vCPUs, 8 GiB RAM.
We ran the same scenario twice with each engine. Each run gradually admitted 100 students, then attempted a 15-minute hold at full attendance. Application/browser versions, publishing settings and quality thresholds were unchanged. Browser load was distributed across separate workers. Server plans and CPU models matched, but the engines used fresh instances rather than the identical physical host.
| Measurement | Pion | Mediasoup |
|---|---|---|
| First run | Passed full hold | Passed full hold |
| Repeat run | Passed full hold | Failed after 10m23s at full attendance |
| Average total media-server CPU | 67.4% / 68.9% | 55.4% / 55.5% |
| Average busiest forwarding thread, as % of one core | 29.0% / 29.7% | 78.9% / 78.5% |
| Maximum sampled busiest forwarding thread | 51.6% / 53.4% | Approximately 100% in both runs |
Mediasoup’s repeat-run averages cover only the period before failure.
In that failure, one student experienced 1.29–2.36% audio packet loss across six audio streams, exceeding our 1% threshold, and approximately 1.3-second video stalls. Other viewers recorded shorter stalls. We found no matching overall CPU saturation or UDP buffer errors. Both recordings completed and decoded successfully.
We want to understand:
-
What setup produced the 1,000-viewer result? Which engine, CPU model, video resolution/bitrate and test duration were used? Was recording enabled, and were packet loss and freezes measured, or mainly successful connections? We want to understand whether our results are unexpectedly poor or simply reflect a different workload.
-
Should we expect mediasoup’s near-2× advantage in our single classroom? We understand that the published comparison uses multiple smaller rooms. For one room with three publishers sharing both camera and screen, would you recommend mediasoup or Pion?
-
Can one mediasoup room reach a forwarding-thread limit while other cores remain available? Our thread measurements differ substantially between engines. Would adding more vCPUs help this room, or would faster individual cores be necessary? What server configuration would you recommend for this workload with recording and sensible headroom?
-
Does the interruption resemble a known 3.8 issue? Is there a patch or configuration we should check? If another reproduction is needed, please tell us exactly what additional evidence to collect. We have timestamped browser WebRTC statistics, publisher feedback, provider logs and per-thread CPU measurements.
We are not assuming the published figures are directly comparable, or that mediasoup caused the failure. We want to understand the difference and choose a configuration we can reliably release.
Basically, we want to achieve this claim - “One publisher and 1,000 viewers in a single room on a four-CPU server.”, what are we missing?
Thanks,
Ruchir