Saltar al contenido principal
AllsWeb
Measurements
  1. The aaPanel benchmark, in full
  2. MariaDB versions, measured — four pairs, no reportable difference
  3. The OS and stack round — six axes, one reportable result
  4. PHP versions, measured — four pairings, four washes
  5. Security and isolation, measured
  6. How the 6amMart optimisation was measured
  7. What we withdrew
  8. How we measure

The OS and stack round — six axes, one reportable result

On this page

  • The short answer
  • The six axes, and what each returned
  • The noise floor, which limits every other number on this page
  • Where each component comes from, and why that is the whole decision
  • The one OS comparison that survived attribution
  • Redis — the axis that decided something, and not on speed
  • nginx and the kernel — two washes, in full
  • What actually made the application faster
  • Claims from this round that were withdrawn
  • Debian 12, and why the native runtime refuses it by name
  • The support runway, which is what the recommendation actually rests on
  • A version string cannot answer a security question
  • What this round does not tell you
  • Related

The OS and stack round — six axes, one reportable result

We swapped the operating system, PHP, MariaDB, nginx, Redis and the kernel under the same 6amMart, on the same hardware, with the same real shop's data, and measured each one. Not one version swap produced a speed difference worth reporting. The single axis that decided anything decided it on compatibility, not speed — so the recommendation that came out of this round is about how long each release keeps receiving security updates.

That is a negative result, and it is published here as prominently as a positive one would be. A round that finds nothing has told you something: once the configuration is right, which recent version of each component you run does not matter for this application.

The short answer

Three releases are supported by the native runtime, and each takes every serving component from its own distribution archive:

ReleasePHPMariaDBnginxRedisSecurity updates until
Ubuntu 26.04 LTS — recommended8.511.81.288.0Apr 2031
Debian 13 (trixie)8.411.81.268.0Aug 2028
Ubuntu 24.04 LTS8.310.111.247.0May 2029

Node.js is the one exception on all three — a single declared version, 26.8.1, installed from an official tarball against a checksum rather than from a package repository.

If you want the decision rather than the evidence, which operating system is the shorter page. This one is the round.

The six axes, and what each returned

Same box wherever a component could be swapped live, so the hardware cancels. Same dataset, same tuning, same index set on every arm.

AxisWhat was comparedResultReportable?
Operating systemUbuntu 26.04 vs 24.0426.04 ahead in every arrangement tried; magnitude not resolvabledirection only
PHP8.3 / 8.4 / 8.5, four independent pairingswashno difference
MariaDB10.11 / 11.4 / 11.8 / 12.3wash — no version cleared its own controlno difference
nginxthe archive's build vs nginx.org's newest stablewash — +0.2 % and −1.0 %, opposite signsno difference
kernelthe release's own vs backports, both Debianswash — on one box the control drifted further than the effectno difference
Redisthe archive's build vs redis.io's own packageupstream's package cannot start at allyes — compatibility

Five of the six say "nothing to choose". Where nothing separates the versions, the deciding question becomes which one stays patched with nobody doing anything — and that is the distribution's own archive by definition, because the automatic-update mechanism matches on the origin strings in each repository's own metadata and covers o=Ubuntu and origin=Debian and none of the third-party origins.

The noise floor, which limits every other number on this page

This is the most important figure in the round, and it is a figure about the measurement rather than the software.

What was comparedSame configuration?Difference measured
Two byte-identical servers, measured simultaneouslyyes+11.6 % median, one-directional on 20 of 20 rows
Three identical serversyes~19 % span
One Debian 13 box's kernel leg A against leg C — the same kernel, twice, 90 minutes apartyesapp rows +6.7 %, control rows +14.5 %
One Debian 12 box's kernel leg A against leg C, ~2 h apartyesapp rows −0.7 %, control rows +4.2 %
One Debian 12 box's database leg A against leg C, ~2 h apartyesapp rows +0.4 %, control rows 0.0 %

Two servers from the same provider, with the same processor model, the same kernel, the same release, the same database build, the same buffer pool, the same worker count, the same cache settings and the same data, measured at the same time, came out 11.6 % apart — and did so on every single row, in the same direction. That was checked for the obvious explanations and none of them held: a processor benchmark that touches neither PHP nor the database matched within 1 % across all three machines, hypervisor steal time read 0.00 % and 0.02 % at idle, and the database files were identically fragmented.

So an effect smaller than about 19 % cannot be attributed to software when the two arms sit on different machines. That single fact is why this round was redesigned to swap components inside one box wherever physically possible, and why several earlier conclusions were withdrawn rather than defended.

How to read anyone's OS or version benchmark

If a comparison does not tell you its run-to-run variance, it has not told you whether its difference is real. A clean one-directional sweep across every row looks like proof and is exactly what identical hardware produces.

Where each component comes from, and why that is the whole decision

A native install takes the web server, PHP, the database and the cache from the release's own archive. Nothing is compiled, and no third-party repository sits in the serving path, so a security fix arrives the way the rest of the operating system's fixes arrive.

That sounds like housekeeping. It is the entire recommendation, because five of six axes measured no reason to prefer anything else.

ComponentUbuntu 26.04Debian 13Ubuntu 24.04
PHP-FPMautomatic (o=Ubuntu,a=resolute-security)automatic (o=Debian,l=Debian-Security)automatic (o=Ubuntu,a=noble-updates)
MariaDBautomaticautomaticautomatic
nginxautomaticautomaticautomatic
Redisautomaticautomaticautomatic
kernelthe release's ownthe release's ownthe release's own
Node.jspinned tarball — manual, by designsamesame

Node.js is deliberately the exception. The panel ships as compiled V8 bytecode, and V8 accepts bytecode only from the exact version that produced it, so a server drifting off the pinned version would leave a panel that cannot start. It moves on a release rather than on an update.

One detail the version numbers hide

Ubuntu splits its archive into main, which Canonical supports for the full five years, and universe, which is community-maintained and gets Canonical security coverage only under a Pro subscription. Debian makes no such split — its security team covers all of main.

Read from each package's actual pool path rather than from a suite label:

PackageUbuntu 26.04Ubuntu 24.04Debian 13
PHP-FPMuniverseuniversemain
MariaDBmainuniversemain
nginxmainmainmain
Redisuniverseuniversemain

This is the strongest honest argument for Debian 13 over Ubuntu 26.04, and it is invisible in a table of version numbers. It does not overturn the recommendation — 26.04 keeps the longest support runway of the three and needs no third-party repository either — but it belongs in the decision, and 26.04 moving the database from universe to main is a real improvement over 24.04 rather than a version bump.

Ubuntu Pro is free for personal use on up to five machines, so a hobby server is covered either way. A commercial fleet is not.

The one OS comparison that survived attribution

Ubuntu 26.04 against Ubuntu 24.04 was the only cross-machine axis in the round, and the first attempt at it was thrown away.

The honest version moved the 24.04 arm onto the other arm's exact components on the same machine — the same PHP binary, the database upgraded in place to the same series, the same tuning, the same 601 indexes, the same caches, the same data. That makes it release-against-release with the software equalised:

ArrangementResult
24.04 as shipped vs 26.04, first reading24.04 slower by +34.6 %
The same comparison, against the other 26.04 machine24.04 slower by +14.4 %
Components equalised, same comparison24.04 slower by +12.0 %
Clean equalised re-run, 6 passes each26.04 ahead on 15 of 16 rows, median +12.3 %

And the control that keeps it honest: the two reference machines were both 26.04, on identical hardware with identical tuning, and one measured 18.9 % slower than the other on those same rows.

So the defensible statement is the only one we make: 26.04 is not slower than 24.04, and in every arrangement tried it is level to modestly ahead. There is no performance reason to prefer 24.04, and none to migrate a working 24.04 server. The +34.6 % figure must not be quoted, and neither should the +12 % without the sentence that follows it — the release effect and the hardware lottery are the same size.

What that comparison contains, honestly: a whole stack, not one variable. 26.04 brings kernel 7.0 against 6.8, glibc 2.43 against 2.39, nginx 1.28 against 1.24 and MariaDB 11.8 against 10.11, all at once. Which of those earned the lead is not answered — attribution was attempted and mostly failed to separate. "Build new servers on 26.04" is supported. "26.04's kernel is worth N %" is not.

Redis — the axis that decided something, and not on speed

The native runtime does not write its own service definition for Redis; it uses the distribution's own template, which waits for the server to report itself ready before the service counts as started.

BoxBuildResult
Debian 13archive 5:8.0.2-3+deb13u2active, answers, app serves 200
Debian 13redis.io 6:8.10.1-1rl1~trixie1starting until timeout, then killed
Debian 12archive 5:7.0.15-1~deb12u9active, answers, app serves 200
Debian 12redis.io 6:8.10.1-1rl1~bookworm1starting until timeout, then killed

The server itself is fine in the failing case — the process runs and would answer queries. The service never reaches "started". So the package install appears to hang on the same wait, and anything that checks whether Redis is up reports a permanently-starting service on a machine whose Redis works perfectly.

There is no speed number for this axis and none is needed. An arm that cannot be started cannot be measured, and it would be disqualified regardless of how fast it was.

A shortcut that looked like a diagnosis, and is retired

On Ubuntu, counting readiness-signalling strings inside the binary gave 5 for the working build and 0 for the failing one — which looked like a clean way to predict the problem without starting anything. Read across all four releases:

BoxVersionReadiness stringsService works?
Ubuntu 26.048.0.55yes
Ubuntu 24.047.0.150yes
Debian 138.0.20yes
Debian 127.0.150yes
Debian 13 / 12redis.io 8.10.10no

Three working builds report zero. A property that is identical on a build that works and a build that does not cannot tell them apart, so the count is now printed as a hint and the decision comes from starting the real service and requiring its own verdict. The conclusion — take the distribution's Redis — did not change. The stated reason for it did.

nginx and the kernel — two washes, in full

nginx. The two builds differ in more than version: the archive build carries the regex JIT and nginx.org's does not, and this configuration is regex-heavy, so the newer version could plausibly lose more to the missing JIT than it gains. Seven alternating pairs per box, with the version that served each pass read back off the running binary:

Debian 13: archive 1.26.3 vs nginx.org 1.30.4Debian 12: archive 1.22.1 vs nginx.org 1.30.4
The 14 rows where PHP or the database execute578.0 ms vs 579.3 ms — +0.2 %560.8 ms vs 555.0 ms — −1.0 %
… at concurrency 1−1.3 %+0.9 %
… at concurrency 4+0.9 %−1.9 %
The 6 control rows, which touch neither+2.6 %+7.2 %
Rows won6 vs 86 vs 8

Three readings say wash rather than one: the whole-application difference has opposite signs on the two boxes, the sign inverts between concurrencies on both, and on Debian 12 the control rows — served from nginx's own cache without touching PHP or the database — move seven times further than the effect, in the opposite direction. The missing regex JIT costs nothing measurable here, which is worth saying because it was the reason to suspect the newer build might lose. It does not win either.

The kernel. A kernel cannot be swapped inside one boot, so this ran as A, B, A across three reboots, with the third leg as the control.

BoxLeg A — shippedLeg B — backportsLeg C — shipped againControl rows
Debian 12554.0 ms553.9 ms (−0.0 %)550.0 ms (−0.7 %)7.1 → 7.2 → 7.4 ms (+5.7 %)
Debian 13550.0 ms558.0 ms (+1.5 %)586.6 ms (+6.7 %)6.9 → 7.5 → 7.9 ms (+14.5 %)

On Debian 12 the effect is two orders of magnitude smaller than its own control's drift, the sign inverts between concurrencies, and the same kernel measured twice scores differently from itself. On Debian 13 the control failed outright: the shipped kernel did not reproduce its own number, coming back 6.7 % slower — four times the size of the effect being measured — with control rows moving 14.5 %, and winning zero of 14 rows on its second outing. That is the machine drifting over the 90 minutes of the run. If the kernel were responsible, leg C would have returned to leg A.

What actually made the application faster

Nothing on this page is where the speed came from. Three configuration changes were worth more than every version swap in the round put together:

ChangeEffectWhere it lands
Turning off TLS on the database client's local unix socket24 ms → 6 ms per panel database callevery admin panel page
Laravel's config + route cache~3×the whole application
PHP's JIT in tracing mode rather than function1254 against 1205 on the same measureapplication-wide

Version selection is a sub-2 % game beside those. The database-client one is worth reading in full on the database page, because the same mechanism silently invalidated that round's first set of database numbers — every one of which was discarded.

Claims from this round that were withdrawn

Each of these was written down as a finding before it was checked properly. They are recorded rather than deleted, because the wrong reading was the easy one to reach in every case.

ClaimStatus
"26.04 is +32 % faster than 24.04"Withdrawn as a magnitude. Real as measured, wrongly attributed: it was 19 rows measured against one machine that happens to be the fastest of three. The direction survives; the number does not.
"14 of 16 rows one-directional means it cannot be hardware"Wrong. Two byte-identical machines produced exactly that signature at exactly that size, on 20 of 20 rows.
"MariaDB 10.11 cannot run on Ubuntu 26.04"Wrong, and the reason was interesting. A stale kernel security profile left by an older package blocked every non-archive MariaDB identically. Removing it by name fixed all three versions on the first try.
"nginx from nginx.org is 1.9 % slower, archive ahead on 10 of 14 rows"Withdrawn. That run recorded no proof of which binary served each pass, and three consecutive "swaps" had silently not happened. Re-run with per-pass proof: +0.2 %, rows split the other way.
"redis.io's build has no readiness signalling, which is why it hangs"The reason was wrong, the conclusion stands. See the table above.
"nginx.org offers a version 2.0.0"Wrong. That was the version of the separate module packages sharing the same index file. nginx itself: stable 1.30.4, mainline 1.31.4.
"Ubuntu 24.04 ships nginx 1.26.3"Wrong. 24.04 ships 1.24.0; 1.26.3 is Debian 13's.
"Debian 13 ships PHP 8.3"Wrong. Its archive carries 8.4.
One database leg's totalsRecomputed. Six passes had served errors at 0.3 ms on one row, which reads as a spectacular win. Recomputed on the rows that were clean in all three legs; still a wash.

Debian 12, and why the native runtime refuses it by name

Debian 12 was the fourth release in this round and its measurements are all still on record — a dropped release does not make its numbers false. It is no longer installable natively, and the reason is not speed.

Its normal security support ended in July 2026 — verified from the machine itself, whose own package suite label had already moved from "stable" to "oldstable" — and the only PHP its archive carries is 8.2, whose upstream security support ends 31 December 2026. Running a supported PHP there means adding a third-party repository whose origin the automatic-update mechanism does not cover, so those patches never arrive on their own. For the component with the largest attack surface in the stack, on a release that has already left full support.

The container runtime still installs on Debian 12, because a container brings its own PHP and database. You should still not start a new shop there: the kernel, the C library, the container engine itself and the SSH server all come from that host archive, and that is the part no longer getting fixes.

The support runway, which is what the recommendation actually rests on

ReleasedStandard support endsThen
Ubuntu 26.04 LTS2026-04-23Apr 2031extended maintenance to Apr 2036 with a subscription
Ubuntu 24.04 LTS2024-04-25May 2029extended maintenance to May 2034 with a subscription
Debian 132025-08-092028-08-09community LTS to 2030-06-30
Debian 122023-06-102026-07-11 — already pastcommunity LTS to 2028-06-30

And the components, which move on their own schedules:

PHPSecurity support endsMariaDBEnd of life
8.3 (Ubuntu 24.04)31 Dec 202710.11 LTS (Ubuntu 24.04)16 Feb 2028
8.4 (Debian 13)31 Dec 2028 — active support ends 31 Dec 202611.8 LTS (Ubuntu 26.04, Debian 13)4 Jun 2028
8.5 (Ubuntu 26.04)31 Dec 202911.4 LTS29 May 2029

Two things worth knowing from that table: 11.4 outlives 11.8, because MariaDB cut LTS binary support from five years to three after 11.4; and Redis 8.0's security support ends 1 December 2026, which affects Debian 13's 8.0.2 and Ubuntu 26.04's 8.0.5 — both will need their distribution to move to a supported branch.

A version string cannot answer a security question

Worth stating plainly, because it is the most common mistake made in the other direction. A distribution's older version number is not itself an exposure: the source is frozen and patches stack onto it. Comparing what a binary reports against upstream's release table produces false positives in both directions, and right now it produces them in both directions at once.

The clearest demonstration: Debian backported the 2025 Redis remote-code-execution set into its 7.0.15 packaging with no version bump at all. That package is upstream end-of-life and patched anyway, so asking the binary its version would tell you the opposite of the truth. Meanwhile two 2026 nginx advisories are fixed on both Ubuntus and open on both Debians — which the version numbers, 1.24.0 against 1.26.3, invert.

Check the security tracker row for the package you actually have. Not the number.

What this round does not tell you

Every measurement here is from a 2-core, 3.9 GB server. We have not measured 8 GB or larger, so nothing here predicts them.

It does not separate "which component earned the lead" on the one axis that produced a direction, and it says so above rather than guessing.

And it does not describe your shop. The data behind it is one real production dataset — 66,701 orders, 113,231 order lines, 17,534 customers, 192 tables — which is a genuine shop and is not yours.

Related

MariaDB versions, measured covers the database axis in full, including the measurement floor that invalidated the round's first set of database numbers. PHP versions, measured covers the four PHP pairings and the compatibility work that retired an earlier blocker. How we measure is the method, the traps, and where the raw data lives.

For the decisions rather than the evidence: which operating system and which database engine.

PreviousMariaDB versions, measured — four pairs, no reportable differenceNextPHP versions, measured — four pairings, four washes
AllsWeb

AI + Automation + Human Engineers — builds de nivel producción entregados en 1-3 días. Instalación, personalización, publicación en tiendas y soporte gestionado para cualquier script o codebase.

  • hi@allsweb.com
  • +91 72328 80007

Explorar

  • Agente IA
  • Automatizaciones y flujos con IA
  • Optimización para búsqueda con IA
  • Todas las soluciones
  • Todos los scripts de terceros
  • Todos los servicios
  • 6amMart optimizado
  • SixPanel
  • SixPreflight
  • Servicio de actualización / upgrade
  • Corrección 16 KB de Play Store
  • Ofertas y cupones

Empresa

  • Nosotros
  • Contrátanos
  • Soporte y contacto
  • Programa de afiliados
  • Próximamente

Legal

  • Términos y condiciones
  • Política de privacidad
  • Política de reembolso
  • Política de pagos
  • Política de soporte
  • Uso aceptable
  • Política de cookies
  • Términos de afiliados
  • Aviso legal

© 2026 AllsWeb. Todos los derechos reservados.