Platform → Load testing

Janus load testing

How many viewers one Krona.Chat server can handle: results of load testing the Janus video server.

Tested on 10 October 2026

Test server
8 vCPUAMD EPYC 9645 processor16 GBof RAM1 Gbit/snetwork port1080pvideo at ~2.5 Mbit/s
Mixed servermodels and viewers on one server up to 330 viewers The model streams to this server, and her viewers watch from the same server. The simplest setup — one type of server for everything.
Viewer serversplit setup up to 360 viewers Only viewers connect to it. It gets the models' video from the model server and delivers it to viewers.
Model serversplit setup ~220 broadcasts Only models connect to it. It receives their broadcasts and forwards them to the viewer servers. Estimated from measurements: we tested 120 broadcasts, and the server was only 14% loaded.

How the setups work

Mixed: model → mixed server → that model's viewers. All the viewers of one broadcast have to fit on one server.

Split (cascading): model → model server → one or more viewer servers → viewers. The model server itself forwards the video between servers (cascading) — no separate server is needed for it. When a broadcast has many viewers, they are spread across several viewer servers.

Key takeaways

  • One server reliably delivers video to 330–360 viewers at once — with no freezes and no loss of quality.
  • When receiving broadcasts is moved to a separate server, a viewer server handles about 10% more viewers than a mixed one, and a single broadcast can have any number of viewers — they are spread across several viewer servers.
  • Receiving broadcasts barely loads the server. Most of the load is delivering video to viewers.
  • The server uses almost all of its network port: up to 900 Mbit/s of video to viewers with no loss on a 1 Gbit/s port. Past the limit, quality drops for everyone at once, so servers are loaded with headroom — and that is how the calculator at the bottom of the page counts.

How we tested

We tested Krona.Chat video servers. Models and viewers were software clients that behave like a browser: they join a room, send and receive video.

  1. Start the broadcasts

    Models start streaming 1080p video at about 2.5 Mbit/s — like a real webcam.

  2. Add viewers

    A new viewer connects every 2 seconds, so the load grows smoothly.

  3. Watch the quality

    For every viewer we count how much video is lost on the way. While the loss is under 1%, the picture is smooth.

  4. Find the limit

    The test stops when quality starts to drop. The most viewers with no loss is the server's capacity.

Each setup was checked in a separate test. Every line on the charts is its own test; the lines don't add up.

Results

How much video the server sends to viewers

The more viewers, the more video the server sends. While the line rises steadily, every viewer gets the full video. When the line breaks downward, the server is overloaded and can't deliver video to everyone.

Show table

Mbit/s — how much video the server sends to all viewers per second. Green frame — the most viewers with no loss of quality; red background — overload.

Video quality for viewers

The share of video that didn't reach the viewer. Up to 1% the viewer doesn't notice it; above that, the picture freezes and breaks up. A sharp rise in loss is the server's limit.

Show table

Video loss for viewers, %. Green frame — the most viewers with no loss of quality; red background — overload.

Server CPU load

The CPU never reaches 100%: the server hits its limit on video delivery first. Past the limit, the load even goes down — the server loses video instead of sending it.

Show table

CPU load, %. Green frame — the most viewers with no loss of quality; red background — overload.

Which setup to choose

All figures are for 1080p video at about 2.5 Mbit/s, with no loss of quality.

Mixed server

up to 330 viewers

Models and their viewers on one server. In the test, each broadcast had about 33 viewers.

Suits broadcasts with up to a few hundred viewers. With many broadcasts and few viewers each (about 10), the server handles a little less — about 280.

Split setup

up to 360 viewers

Model servers receive the broadcasts, viewer servers show them. A viewer server handles about 10% more viewers than a mixed one.

Suits large audiences: the viewers of one broadcast are spread across several viewer servers, so there is no "the whole audience on one server" limit.

Model server

~220 broadcasts

Part of the split setup: it receives video from models and forwards it to the viewer servers. It's light work: 120 broadcasts loaded the server only 14%.

~220 is estimated from measurements: for this server, each broadcast is one incoming video and one onward forward.

Compared with the calculator on the site

The site's server calculator assumes about 700 Mbit/s of video to viewers per server. The test showed that a server with a 1 Gbit/s port delivers up to 900 Mbit/s with no loss, so the calculator on the site counts with good headroom.

For 2.5 Mbit/s video, that's 330–360 viewers per server. For 1080p at 3 Mbit/s — about 290 viewers by calculation.

A calculation, not a test result

Calculator: how many servers you need

It uses the coefficients we got in the tests. Enter your load and the server price at your provider.

Servers needed—
Cost per month—
Total viewers—at once
Viewers per server—

The results were obtained on a test server and may differ depending on the provider, network and broadcast settings.

The report was generated by orchestration/capacity_report.py from the test-run data (Locust + Prometheus + viewers' RTP statistics).