OpenFreeMap teilt seine Erfahrung mit der Bewältigung von 100.000 Anfragen pro Sekunde
(blog.hyperknot.com)- OpenFreeMap hat erfolgreich 100.000 Anfragen pro Sekunde und 300 Millionen tägliche Zugriffe verarbeitet
- Der plötzliche Anstieg bei Wplace.live und automatisierte Massenanfragen waren die Ursache des Traffic-Spikes
- Cloudflare erreichte eine CDN-Cache-Rate von 99,4 %; der Server verkraftete zusätzlich noch 1.000 RPS problemlos
- Daraus resultierten nur kleinere Vorfälle wie fehlende Kacheln; der Service lief insgesamt weitgehend normal
- Künftig sind Verbesserungen beim automatischen Traffic-Management geplant, unter anderem eine Referer-basierte Bandbreitenbegrenzung
Zehn Monate OpenFreeMap und die Bewältigung von Extrem-Traffic
OpenFreeMap hat in den letzten 10 Monaten eine sehr stabile Betriebszeit erlebt. Dank der Bandbreitenunterstützung durch Cloudflare, der Stabilität der Hetzner-Server, des Tile-Service über Btrfs und der Effizienz von nginx wurde die Systemzuverlässigkeit bestätigt. Eines Tages wurde jedoch plötzlich gemeldet, dass einige Kacheln nicht geladen würden. Normalerweise wäre das durch einen Algorithmusfehler verursacht, diesmal wurde im nginx-Log jedoch der Fehler open() "Too many open files" festgestellt.
Über das Traffic-Monitoring-Tool wurde festgestellt, dass in 24 Stunden 3 Milliarden Anfragen auftraten und allein die kleinen Tile-Dateien 215 TB Traffic erzeugten. In den letzten fünf Minuten gab es einen Peak von 30 Millionen Anfragen, also 100.000 Requests pro Sekunde. Für einen kommerziellen Kartendienst würden hier monatlich Kosten von über 6 Millionen US-Dollar anfallen.
Im Dashboard von Cloudflare wurden 96 % mit 200 OK beantwortet; nur 3,6 % wurden als abnormal (206 Partial Content) klassifiziert. Die meisten Anfragen wurden normal bedient, und außer einigen fehlenden Kacheln funktioniert das gesamte System ordnungsgemäß.
Ursache des Traffic-Spikes: Wplace.live
Die Ursache dieses Spikes war die neue kollaborative Zeichen-Webseite Wplace.live. Kurz nach dem Start kamen dort massenhaft Nutzer an, und sie wurde so ausgelegt, dass sie Karten auf OpenFreeMap-Basis verwendet. Nutzer erzeugten große Mengen an Requests mit automatisierten Tools (z. B. Puppeteer/Chromium, IP-Rotation usw.), um das Limit von 1 Pixel in 30 Sekunden zu umgehen.
Der Betreiber betont anhand früherer Erfahrungen mit Neal.fun, wie wichtig die Vorabkommunikation vor einem solchen Verkehrszuwachs ist. Da der Vorfall diesmal den Betrieb störte, wurde erstmalig eine Cloudflare-Regel eingesetzt, um zu blockieren. Für die Zukunft wird nach automatischen Traffic-Steuerungsansätzen auf Basis von referer oder custom header gesucht, inklusive der Nutzung der Cloudflare-API.
Unterstützung durch Cloudflare und die Leistung der OpenFreeMap-Architektur
Cloudflare hat die Bandbreitenunterstützung in einem sehr schnellen Prozess (innerhalb von 48 Stunden inkl. Wochenende) genehmigt und sogar mit den Engineers über die passende Architektur gesprochen. Auch als großer Anbieter zeigte Cloudflare bemerkenswerte Reaktionsfähigkeit.
Der Betreiber ist stolz darauf, eine CDN-Cache-Rate von 99,4 % erreicht zu haben und der Server habe auch eine Last von 1.000 RPS verkraftet. Für einen Dienst, der wöchentliche Datenupdates bereitstellt, sei das ein beachtliches Ergebnis.
Austausch mit den Wplace.live-Entwicklern und Lösungsvorschläge
Später wurde Kontakt mit den Entwicklern von Wplace.live aufgenommen, die verstanden, dass sie wegen des plötzlichen Anstiegs auf 2 Millionen Nutzer nicht ausreichend vorbereitet waren. Es wurde besprochen, Self-Hosting-Instanzen von OpenFreeMap anzubieten, um die Traffic-Konzentration zu senken und die Effizienz zu steigern.
Außerdem deutet die Tatsache, dass bei nur 2 Millionen Nutzern 3 Milliarden Anfragen auftraten, darauf hin, dass script-basierte Massenanfragen überwiegen. Da normale Nutzer bei nur 10 bis 20 Requests bleiben, wurde empfohlen, die Service-Politik zu ändern, um unnötige automatisierte Requests zu verhindern.
Künftige Verbesserungen und Learnings
Der Betreiber kündigt Verbesserungen in zwei Punkten an.
-
Referer-basierte Bandbreitenbegrenzung
- Geplant ist die Begrenzung von Requests pro Referer in Cloudflare auf etwa 100 bis 200 Millionen innerhalb von 24 Stunden
- Native Apps sollen künftig auf die Verwendung von
custom headergesetzt werden
-
Umgang mit fehlenden Kacheln und Serverkonfiguration
- Es werden Maßnahmen umgesetzt, damit durch fehlerhafte Serverkonfiguration keine leeren Kacheln mehr erzeugt werden
OpenFreeMap wird derzeit mit 500 US-Dollar monatlicher Spenden betrieben. Die Infrastrukturausgaben sind ausreichend gedeckt, aber neue Entwicklung hängt von begrenzter persönlicher Zeit ab. Zusätzliche Unterstützung könnte die Entwicklungsgeschwindigkeit und die Ausweitung der Service-Stabilität ermöglichen.
Über GitHub-Sponsoring kann man das Projekt unterstützen: https://github.com/sponsors/hyperknot
Noch keine Kommentare.