10 Gbit Saturation

Hello!

We use Janus 0.x series running in Docker container on the host network. We have a Linux machine with a 10 Gbit network card, which we tested with traffic generators, showing the required bandwidth.

However, when we try to load test Janus with many concurrent users, we can reach ~1 Gbit bandwidth on ~1k CCU, after that all we can see on the clients is a black screen and no amount of new users increases total outgoing traffic.

We use our custom plugin – if you need additional details about its work, I will provide them.

How can we possibly fix such an issue? Where should we look?

I can’t help on custom plugins, sorry. In general, I’d say have a look at event loops in janus.jcfg.

We tried to set event_loops equal to the core count and saw an improvement in bandwidth which went up to ~1.6 Gbit/s with our plugin.

Next, we tried to load test the official Video Room plugin. There was 1 publisher with 1.5-2.5 Mbit/s outgoing stream. We started test agents in batches of 200 up to 1000 agents in total.

We hit the 1 Gbit/s limit as well – tried to add more agents but to no avail. We started to see a lot of slow-link events. It seemed like adding more agents caused the publisher to drop bitrate a bit.

Both 0.x and 1.x series showed similar results.

The VideoRoom plugin is not optimized for 1-to-a-ton broadcasting, since it comes with its own bottlenecks, so it wil never do what you want as it is. A better check would be using the Streaming plugin with helper threads, or maybe try the experimental helper threads support in the VideoRoom.

2 Likes