Skip to content

Mintrix performance ​

How Mintrix behaves with a large installation: 50,000 devices, 500 channels and a week's programme guide. Measured on 2026-10-22 against a staging build of Mintrix, the code of the first release after 0.5.2, run the way an installed server runs it.

One 10-core server
~420req/s
Box requests, mixed as boxes send them
Comfortable on one server
20kdevices
Peak and power-cut recovery together
Tested
50kdevices
5,000 subscribers, 500 channels, a week of guide
Requests refused or failed
0failed
At 1, 10 and 50 requests at once

In short ​

What set-top boxes ask of Mintrix at evening peak, and after a power cut, against what one 10-core server handled:

10,000devicesComfortable4,000 boxes open at peak
100req/s
evening peak · 24%
150req/s
after a power cut · 36%
20,000devicesFine, little headroom8,000 boxes open at peak
200req/s
evening peak · 48%
295req/s
after a power cut · 70%
50,000devicesOver capacity20,000 boxes open at peak
500req/s
evening peak · 119%
735req/s
after a power cut · 175%

Evening peakPower-cut recovery on topOne 10-core server (420 req/s)

The numbers as a table
DevicesEvening peakAfter a power cutShare of one 10-core server (~420 req/s)
10,000~100 req/s~150 req/sComfortable: a quarter to a third
20,000~200 req/s~300 req/sFine: half, three quarters while boxes come back
50,000~500 req/s~730 req/sOver capacity: plan more processor cores, or a longer ping interval (see below)

The panel stays fast at all three sizes: with 50,000 devices, its lists, searches and dashboard answered within 70–270 ms, even on the slower emulated setup.

How these numbers were measured

The test ran on one Apple M1 Pro (10 cores) with Docker Desktop, with the database and the load generator on the same machine. Mintrix's release images are built for x86-64 servers, so the Mac first ran them emulated, which is 2.5 to 3 times slower; the same code was then run natively for the server figures. Use the tables to compare requests with each other, and measure your own server for exact capacity.

Test data ​

All made up, in a separate installation, with Ministra switched off so nothing reached a real portal.

Resellers20
Subscribers5,000
Devices (5% switched off, expiries spread over a year either side of today)50,000
Channels, each with a stream500
Programme guide (a programme every 30 minutes, 3 days back to 4 ahead)168,000 programmes

Channels were tested two ways: first every channel as a base channel, then the way operators sell them, through TV packages:

PlanPackagesChannels the box gets
Basic20 base channels + Basic220
Basic + Sports+ Sports280
Basic + Movies+ Movies, Kids (optional, not switched on)300
Premiumthe whole catalogue500

The panel ​

One request at a time, as an administrator: the time from request to answer, median of six.

Median answer with 50,000 devices (emulated)
Device list, first page67 ms
Device list, sorted by expiry77 ms
Resellers77 ms
Subscriber list80 ms
Device list, 50 per page81 ms
Channels83 ms
Device list, page 1,00087 ms
Adding a device88 ms
Renewing a device92 ms
Searching devices185 ms
Dashboard overview268 ms

Searching devices and the dashboard are faster from the next release (see Improved after this test).

The numbers as a table
RequestMedian
Device list, first page67 ms
Device list, 50 per page81 ms
Device list, sorted by expiry77 ms
Device list, page 1,00087 ms
Subscriber list, and searching it80–90 ms
Resellers, channels, the navigation's counts77–83 ms
Adding a device, renewing one88–92 ms
Searching devices (by name, subscriber or MAC)182–188 ms
Dashboard overview268 ms

The panel allows each user 60 requests a minute, so it was measured one request at a time, not under load.

The box API ​

What Mintrix's own MAG interface asks for, from one box, ten at once and fifty at once. Median time, and requests per second.

Channels sold through packages ​

Request1 at a time10 at once50 at once
Categories31 ms50–61 ms · 131–162/s288 ms · 140/s
Channel list, 50 per page37 ms50–73 ms · 111–165/s319 ms · 136/s
Now and next, 20 channels58 ms81–112 ms · 73–88/s458 ms · 99/s
One channel's guide, 6 hours36 ms57–73 ms · 107–145/s333 ms · 142/s
Play link40–69 ms (4 at once)

Ranges are the four plans. No request failed.

What it shows ​

Packages cost nothing noticeable

A box on Basic (220 channels), Basic + Sports, Basic + Movies or Premium (all 500) gets its lists within a few milliseconds of the others. Finding a box's channels through its packages takes under 1 ms in the database; Premium, which holds the whole catalogue, skips that and is the fastest.

  • Up to ten boxes at once, the median answer stays under about 115 ms (95% under 150 ms), even here.
  • At fifty at once, answers slow to 300–450 ms and throughput levels off at about 100–160 requests a second. The limit is the emulated PHP's processor time, not the database.
  • Now and next is the most expensive request, as it reads the guide of 20 channels at once. Boxes ask for it when a programme ends, not on a timer.

Running natively ​

The same requests on the same data, with Mintrix running natively instead of emulated (20 PHP workers, as in the release image):

Requests a second, 10 at once (native)
Ping372 req/s
Channel list, 50 per page280 req/s
Now and next, 20 channels246 req/s
The same, emulated against nativeEmulatedNative
Ping158 req/s372 req/s
Channel list, 50 per page111 req/s280 req/s
Now and next, 20 channels73 req/s246 req/s

Native is 2.5 to 3 times faster; servers run Mintrix natively.

The numbers as a table
Request1 at a time10 at once50 at once
Ping (every open box, once a minute)14 ms25 ms · 372/s91 ms · 491/s
Channel list, 50 per page17 ms32 ms · 280/s120 ms · 388/s
Now and next, 20 channels21 ms38 ms · 246/s159 ms · 292/s

Mixed the way boxes ask (two thirds pings), that is about 420 requests a second from one 10-core machine.

What it means for your installation ​

How much traffic boxes make ​

While Mintrix's interface is open on a box, it asks Mintrix:

How oftenRequests a minute
Ping (the box is online)Every 60 seconds, set by Mintrix1
Switching channel: the play link and the channel's now and nextAbout every 5 minutes0.4
Now and next for the channels in viewWhen a programme ends, about every 30 minutes0.03
Browsing the channel listNow and then0.1
Per open boxabout 1.5

At evening peak, about 40% of devices are open. After a power cut, the boxes that were on come back within about ten minutes, each signing in and loading its lists (about 7 requests) on top of the peak.

DevicesOpen at peakPeakPower cut on topTotal
10,0004,000100/s50/s150/s
20,0008,000200/s95/s295/s
50,00020,000500/s235/s735/s

What to expect ​

  • Up to about 20,000 devices, one server like the one tested carries the boxes with room to spare. After a power cut, answers slow for a few minutes, but no box is refused.
  • Around 50,000 devices, the evening peak alone is more than one 10-core server delivered. Plan for more processor cores, which needs more PHP workers than the 20 the release image runs, or a longer ping interval: pings are two thirds of the traffic, so pinging every 2 minutes instead of every minute lowers the peak from 500 to about 340 requests a second.
  • The database is not the limit. Even at 50 requests at once, the box API's queries took a few milliseconds; the time goes to PHP.
  • Boxes behind one public address share its limit. The box API allows 300 requests a minute per address and action, to keep out floods. A hotel, a building network or a provider that puts many customers behind one public IP address (carrier-grade NAT) can reach that with about 300 open boxes, all pinging once a minute.

Improved after this test ​

The test found three things that grow with the number of devices or programmes. They are faster from the next release on. Measured on the same data, in the database:

Time in the database, before and afterBeforeAfter
Searching devices4.2× faster135 ms33 ms
Dashboard's device figures40% faster92 ms56 ms
Now and next, 20 channels2.8× faster5.3 ms1.9 ms

Each pair on its own scale.

The numbers as a table
BeforeAfter
Searching devices, with their subscriber's name and phone135 ms33 ms
The dashboard's device figures92 ms56 ms
Now and next for 20 channels5.3 ms1.9 ms
  • Searching devices found matching subscribers once for every device; it now finds them once per search.
  • The dashboard counted several figures by reading every device; new indexes let the database count them without.
  • The guide read every past programme of a channel to find the one on now; it now reads only the last day's.

Not measured ​

  • Ministra. It was switched off, so adding and renewing devices here do not include Ministra's time; in real use they wait for Ministra too. For Ministra's own capacity, see Performance and capacity.
  • An x86-64 server. The native figures come from an Apple M1 Pro; a server with similar cores performs in the same range, but measure yours for exact capacity.
  • The release's web server. Natively, Mintrix ran on PHP's built-in server and kept its rate limits in files instead of Redis; the release image runs it behind its own web server, with Redis.
  • More than one Mintrix server, and more than 50,000 devices.
  • The traffic model. How often boxes switch channels and browse is an estimate; your viewers may differ. Pings, the largest part, are exact.

Integrated media software