Skip to content

Performance and capacity ​

How much set-top box traffic Ministra handles, and what it costs to route that traffic through Mintrix. Measured on 2026-10-10 with simulated MAG boxes against Ministra's box API (load.php).

Ministra ceiling
~160req/s
Box API, all paths limited by Ministra itself
Gateway cost per call
+14ms
Through the Mintrix gateway, light load
Idle boxes at the ceiling
~19kboxes
One watchdog poll every 120 s; ~10k comfortable
Reboot storm
~20boots/s
5,000 boxes back in about 4–5 minutes

In short ​

What set-top boxes ask of Ministra at evening peak, and after a power cut, against the most Ministra handled in this test:

10,000devicesFine, little headroom4,000 boxes open at peak
67req/s
evening peak · 42%
147req/s
after a power cut · 92%
20,000devicesOver capacity8,000 boxes open at peak
133req/s
evening peak · 83%
293req/s
after a power cut · 183%
50,000devicesOver capacity20,000 boxes open at peak
333req/s
evening peak · 208%
733req/s
after a power cut · 458%

Evening peakPower-cut recovery on topMinistra on the test machine (160 req/s)

The numbers as a table
DevicesEvening peakAfter a power cutShare of Ministra's ceiling here (~160 req/s)
10,000~67 req/s~147 req/sFine: under half at peak, close to the ceiling while boxes come back
20,000~133 req/s~293 req/sThe peak fits with little room; after a power cut Ministra is overloaded until the boxes are back
50,000~333 req/s~733 req/sOver capacity: the peak alone is twice the ceiling (see below)

Ministra is the part that runs out first: it topped out at about 160 requests a second whichever way the boxes reached it, and routing them through Mintrix does not lower that. Mintrix's own box API carried about 420 requests a second in its test.

These are relative numbers

The test ran on one Apple M2 Max (12 cores) with Docker Desktop, which is slower than a Linux server, and the test portal was lighter than a real one. Use the comparison between paths as is, and the sizing as a starting point; for your own capacity, run the same test on your server.

What was compared ​

Three ways for a box to reach Ministra:

AAgent pass-throughRecommended default
BoxMintrix agentMinistra
  • Boxes use the Mintrix domain
  • The gateway never sees the traffic
  • No measurable cost
BMintrix gatewayOnly with a reason
BoxMintrix agentGatewayMinistra
  • Mintrix can check or change every request
  • +14 ms per call, a quarter to a third less throughput at light load
  • TV stops when Mintrix is down
CHybridFor box-level control
BoxMintrix agentGateway for handshake and get_profileMinistra
  • The agent picks the calls by their action parameter
  • Mintrix can refuse a box at sign-in
  • Everything else passes straight through

Video never passes through Mintrix in any of these: create_link hands the box a stream URL on the streaming server, and the box plays from there.

Results ​

Every simulated box has its own MAC (300 active devices) and signs in with an administrator's debug key, so Ministra serves it like a real box.

  • Boot storm: each box runs a boot session again and again, back to back: handshake, get_profile, get_localization, get_genres, get_all_channels, get_ordered_list and the EPG. This is the load after a power cut.
  • Idle boxes: each box only sends the watchdog poll (get_events), again and again, to find the limit. A real idle box sends one every 120 seconds.
Ministra directlyAgent pass-throughMintrix gatewayrequests per second, higher is better
1 box
Direct37 req/s
Agent37 req/s
Gateway24 req/s
10 boxes
Direct143 req/s
Agent150 req/s
Gateway107 req/s
50 boxes
Direct138 req/s
Agent134 req/s
Gateway124 req/s
100 boxes
Direct108 req/s
Agent101 req/s
Gateway126 req/s
Each panel has its own scale; the best value in a panel is in bold. Errors: 0 in every run.

What it shows ​

Ministra is the limit

Ministra tops out at about 140–175 requests per second here, whichever path is used. Past that it slows down for everyone, and the slowest requests take 7–20 seconds.

  • The agent pass-through costs nothing. At normal load it matches direct access. Overloaded, its median is slightly slower but its slowest requests are much faster.
  • The Mintrix gateway adds about 14 ms per call when load is light: about 100 ms per box boot, which nobody notices.
  • Overloaded, the gateway does better than direct access. The gateway runs 20 workers, so no more than 20 requests reach Ministra at once. Ministra stays efficient and the 20-second waits disappear. Capping Ministra's own Apache workers gives the same protection without the gateway.

Per call, one box booting ​

CallMinistra directlyThrough the gatewayAdded
handshake20 ms34 ms+14 ms
get_profile54 ms69 ms+15 ms
get_localization19 ms34 ms+15 ms
get_genres21 ms36 ms+15 ms
get_all_channels22 ms36 ms+14 ms
get_ordered_list22 ms36 ms+14 ms
EPG24 ms38 ms+14 ms

get_profile is the most expensive call: it reads and updates the device.

All numbers ​

Median response time, with the slowest 1% (p99) in brackets. No run had errors.

Boot storm

BoxesMinistra directlyAgent pass-throughMintrix gateway
137 req/s · 22 ms (71 ms)37 req/s · 22 ms (64 ms)24 req/s · 36 ms (79 ms)
10143 req/s · 56 ms (164 ms)150 req/s · 55 ms (153 ms)107 req/s · 78 ms (211 ms)
50138 req/s · 283 ms (3.2 s)134 req/s · 303 ms (1.0 s)124 req/s · 342 ms (858 ms)
100108 req/s · 695 ms (7.1 s)101 req/s · 813 ms (2.6 s)126 req/s · 677 ms (1.6 s)

Idle boxes

BoxesMinistra directlyAgent pass-throughMintrix gateway
50173 req/s · 283 ms (446 ms)178 req/s · 279 ms (412 ms)161 req/s · 297 ms (451 ms)
200139 req/s · 958 ms (20.9 s)127 req/s · 1.5 s (2.4 s)154 req/s · 1.2 s (1.8 s)

Sizing ​

SituationLoadOn the test machine
Idle boxesOne watchdog poll per box every 120 s: 10,000 boxes ≈ 83 req/sAbout 19,000 boxes at the limit, 10,000 comfortably
Reboot stormAbout 7 calls per boot here, 10–15 on a real boxAbout 20 boots per second: 1,000 boxes back in a minute, 5,000 in 4–5 minutes
Through the gateway15–18 boots per secondPlan for a quarter less during reboot storms

Plan for the reboot storm, not the idle load

Idle boxes are a light, steady load. After a power cut every box boots at once, and that is where Ministra runs out of room first.

How much traffic boxes make ​

While a box is on, it asks Ministra:

How oftenRequests a minute
Watchdog poll (get_events)Every 120 seconds0.5
Switching channel: the play link and the channel's EPGAbout every 5 minutes0.4
Browsing the channel list and the guideNow and then0.1
Per open boxabout 1

At evening peak, about 40% of devices are open. After a power cut, the boxes that were on boot again within about ten minutes, about 12 calls each, on top of the peak.

DevicesOpen at peakPeakPower cut on topTotal
10,0004,00067/s80/s147/s
20,0008,000133/s160/s293/s
50,00020,000333/s400/s733/s

What to expect ​

  • Up to about 10,000 devices, one Ministra like the one tested carries the evening peak with room to spare. After a power cut it runs close to its ceiling for a few minutes, and boxes take a little longer to start.
  • Around 20,000 devices, the evening peak fits with little room, but a power cut does not: Ministra is overloaded until the boxes are back, and without a cap its slowest requests take 7–20 seconds. Cap Ministra's Apache workers, or let boxes reach it through the Mintrix gateway, which kept the slowest requests under 2 seconds when this test overloaded Ministra.
  • Around 50,000 devices, the evening peak alone is about twice what Ministra handled here. Plan more processor cores for Ministra, on a server of its own, and measure it with the test below before moving boxes over.
  • A real portal is heavier than the test portal, with token checks, full channel lists and EPG, so expect these limits to come somewhat lower.

Limits of this test ​

  • Lighter than a real portal. The debug key skips the per-request token check, and the test devices see one channel with no EPG, so responses are small. Expect somewhat lower numbers with a full channel list.
  • Channel changes not measured. create_link needs a channel with temporary links set up; the test portal had none.
  • One machine. Ministra and Mintrix shared the same 12 cores. On separate servers, Mintrix adds a network hop but no longer competes with Ministra for CPU.
  • The traffic model. The watchdog interval is exact; how often viewers switch channels and browse is an estimate, and your viewers may differ.

Run it on your server ​

The test script needs Python 3 and nothing else: stb-bench.py.

  1. In the Ministra admin panel, open Administrators and copy an administrator's debug key.
  2. List the MACs of some active devices, one per line, in macs.txt.
  3. Run a scenario for 20 seconds:
sh
python3 stb-bench.py http://<ministra>/stalker_portal/server/load.php \
  --boxes 50 --seconds 20 --mode boot \
  --debug-key <debug key> --macs macs.txt --label direct

--mode idle sends only watchdog polls. Point the URL at your proxy instead to measure that path.

Not on a busy portal

The test pushes Ministra to its limit, so real boxes slow down while it runs. It may also update the test devices' last-seen data. Run it on a test portal or in a quiet hour.

Integrated media software