Orbitra-Lasttest: 480 Req/s, null Fehler, p99 182 ms

Ein Tracker lebt unter Last: jeder Klick ist ein Schreibvorgang, eine Eindeutigkeitsprüfung und ein Redirect. Deshalb haben wir vor dem v1.6.3-Tag die Eindeutigkeits-Pipeline auf einer Datenbank in Produktionsgröße neu gebaut und auf unserem Teststand mit gestufter k6-Last bombardiert. Hier sind die Zahlen.

TL;DR: Auf einer 3,9-Mio.-Klick-Datenbank (davon ~1 Mio. in den letzten 24 Stunden) hielt Orbitra 480 Req/s ohne Fehler durch, p99 182 ms — auf einem bescheidenen Container mit 2 vCPU und 7 GB RAM. Die Migration beim ersten Request dauerte 0,04 s, der neue Index wurde in einem einzigen Cron-Lauf in 4,8 s aufgebaut, und Berichte über 3,2 Mio. Klicks wurden schneller — mit Zahlen, die zeilengenau mit der Vorgängerversion übereinstimmen.
Fazit: 480 Req/s ohne einen einzigen Fehler auf einer 3,9-Mio.-Klick-Datenbank — von einem Tracker ohne ClickHouse, ohne Redis und ohne Lizenzgebühren.

Warum wir den Test gefahren haben

v1.6.3 machte den Duplikatfilter ehrlich gegenüber mobilem NAT: Der Eindeutigkeitsschlüssel wurde IP + User Agent statt nur IP. Hinter dem NAT eines Mobilfunkanbieters kollidierten vorher zwei verschiedene Personen — der zweite Besucher bekam eine Subid ohne Klickzeile in der Datenbank, und seine Konversion hatte nichts zum Anbinden.

Die Änderung erforderte eine neue ua_hash-Spalte und einen zusammengesetzten Index auf einer Datenbank, die bereits echtes Volumen trug. Das ist die heikelste Art von Migration — also spielten wir vor dem Tag exakt den Pfad durch, den eine Nutzerinstallation durchläuft — mit Daten in Produktionsgröße.

Der Teststand

Ergebnisse

Lauf (3,2-Mio.-DB sofern nicht genannt)Req/sFehlerp99CPU
Uniques, Werks-FPM (DB ~50 Tsd.)480046 ms76%
Uniques480075 ms77%
Wiederkehrende Besucher (50 NAT-Paare)4800, ~1% via Spool14 ms61%
Uniques + offenes Panel, Berichte alle 2 s3200587 ms81%
Uniques, getuntes FPM/nginx, Geo aktiv5600187 ms94%
Uniques, absichtlich überlastet80027% Timeouts—97%

Und die Migrationsgeneralprobe auf dem 3,9-Mio.-Snapshot: Der erste Request nach dem „Upgrade“ erledigte Migration 55 in 0,04 s, ein Cron-Lauf baute den Index in 4,8 s und trug 1 008 085 UA-Hashes in 29,6 s nach — und der NAT-Traffic mit 480 Req/s lief mit null Fehlern und p99 182 ms durch, alle Subids in der DB. Die Vorgängerversion verlor im selben Szenario 27 775 Subids; die neue null.

Zwei Details am Rande. Sogar bei 800 Req/s — jenseits des Bruchpunkts — wurde jeder ausgelieferte Redirect trotzdem in die Datenbank geschrieben: Überlastung verschlechtert die Latenz, nicht die Haltbarkeit. Und die Hash-Korrektheit bekam eine eigene Prüfung: Eine Stichprobe von 2 000 Zeilen gegen PHP-crc32 verglichen — null Abweichungen.

Die Ökonomie: Ein Klick kostet rund 2,5 ms CPU, das setzt die Obergrenze einer 2-vCPU-Maschine bei ~550–600 Req/s, CPU-limitiert. Auf 4 vCPU extrapoliert dieselbe Rechnung zu ~1 000 Req/s — bisher nur auf dem Papier, und auch so gekennzeichnet.

Was der Stresstest vor dem Release aufgedeckt hat

Die Hälfte des Werts des Laufs sind die Bugs, die er ausgespült hat. Alle vor dem Tag geschlossen:

Warum das hält

Ehrliche Einschränkungen

Was das für Sie bedeutet

Ein bescheidener VPS — die Klasse, die die meisten Guides für den Start empfehlen — hat bereits Reserven für ernsthafte Tagesvolumina, und oben wartet keine Event-Abrechnung. Wenn Sie bei Keitaro bleiben, weil „SQLite überlebt das nicht“ — hier sind die Daten, die Sie ansehen sollten.

Orbitra installiert sich auf einem sauberen Ubuntu-Server in etwa 15 Minuten — ein Befehl; die Live-Demo ist offen, wenn Sie erst einmal am Panel spielen möchten.

FAQ

Auf welcher Hardware lief der Test?

Auf einem Cloud-Container mit 2 vCPU und 7 GB RAM unter Ubuntu 24.04, nginx und PHP-FPM in der Werkskonfiguration von install.sh, k6 auf derselben Maschine — die Zahlen sind also eher unterschätzt. Absolute Werte hängen immer von Ihrem VPS ab: Sie skalieren den Server, nicht den Tarif.

Gelten die Ergebnisse für die aktuelle Version?

Der Test lief auf dem Release Candidate v1.6.3. Die Speicherarchitektur (SQLite + Schreib-Warteschlange + Eindeutigkeitsindizes) ist in aktuellen Versionen identisch; die Änderungen danach sind Features und UI.

Warum SQLite statt ClickHouse?

Eine Datei, WAL-Modus, kein separater Datenbankserver. Bei kleinen bis mittleren Volumina ist der Flaschenhals Disk-I/O, nicht RAM — ein günstiger VPS reicht weit. Für dauerhaft Millionen Klicks pro Tag ist eine kolonnenbasierte Architektur stärker — das sagen wir offen.

Hat die Migration Daten verloren?

Im Szenario wiederkehrender Besucher verlor die Vorgängerversion 27 775 Subids; die neue null. Berichte über 3,2 Mio. Klicks stimmten zeilengenau mit der Vorgängerversion überein.

Weiterlesen

vs. Voluum

Voluum Alternative: Kostenloser Self-Hosted Tracker

Voluum startet bei ~$149/Monat. Orbitra ist ein kostenloser Self-Hosted-Tracker mit integriertem Cloaking und 50+ CPA-Integrationen. Vergleich und Migrations-Guide.

Artikel lesen →
vs. Keitaro

Keitaro Alternative: Kostenloser Self-Hosted Tracker

Der nächste Self-Hosted-Konkurrent — aber die Lizenz startet bei 79 $/Monat. Funktionsvergleich plus 1-Klick-Kampagnenimport.

Artikel lesen →