Fortnite

LTM Spielwiese – Nachträgliche Analyse

18.7.2018
Von Das Fortnite-Team
Hallo Leute,

Am 27. Juni gegen 10:00 Uhr MESZ haben wir unseren zeitlich begrenzten Modus Spielwiese gestartet. In der Folgezeit wurde die Spielersuche massiv genutzt, sodass sowohl die Standardmodi als auch die Spielwiese ausfielen.  Wir haben mit Hochdruck daran gearbeitet, dass das Angebot wieder wie gewohnt läuft und konnten den Modus am Abend des 2. Juli neu starten.

Was war passiert?
Unsere Spielersuche baut auf eine Mechanik auf, die Matchmaking Service (MMS) genannt wird. Diese erleichtert den „Handschlag“ zwischen den Spielern, die einem Match beitreten möchten, und dem verfügbaren Server, der das Match hosten soll.  Jeder Knotenpunkt der Spielersuche-Mechanik hält eine lange Liste verfügbarer Server bereit, mit denen sie arbeiten kann. Sie werden je nach Region zufällig zugeteilt, um eine annähernd proportionale Anzahl freier Server zu gewährleisten.  Spieler, die sich mit dem MMS verbinden, fordern einen Server ihrer Region an. Der MMS teilt dem Spieler dann einen Knotenpunt zu, der wiederum einen freien Server aus der angefragten Region aus seiner Liste aussucht.

Da beim Modus Spielwiese pro Match 1–4 und nicht 100 Personen spielen, laufen je nach Gruppengröße 25- bis 100-mal so viele Matches als sonst.  Hätten wir virtuelle Server für den Spielwiese-Modus pro physische CPU etwas enger arrangiert, dann hätten wir im Vergleich zu den anderen Modi immer noch 15-mal so viele Server gebraucht.  Wir konnten die Server-Gesamtkapazität zwar sichern, aber das bedeutete, dass jeder Knotenpunkt plötzlich eine Liste zu verwalten hatte, die 15-mal länger war als vorher.

Wenn ein MMS-Knotenpumkt auf seiner Liste keinen freien Server für eine angefragte Region findet, fragt er automatisch bei den anderen Knotenpunkten an und geht deren Listen durch.  Das dauert lange und verlangsamt selbst den eifrigsten Knotenpunkt.  Ein Knotenpunkt, der alle anderen Listen prüfen muss, die ja auch alle 15-mal länger als vorher sind, wird 15-mal langsamer, sodass sich Rechenzeiten ergeben, die weit über normal liegen.  Als wir die Spielwiese veröffentlichten, erschöpfte die überwältigende Nachfrage die lokalen Listen der MMS-Knotenpunkte weitaus schneller, als das System sie aktualisieren konnte.  Jeder Knotenpunkt fragte bei anderen Punkten nach Servern, die einfach noch nicht existierten, oder brauchte extrem lange, um einen aus den anderen Listen auszuwählen.  Die langen Rechenzeiten bewirkten, dass die CPU mit einem Rückstau ausstehender Anfragen zugekleistert war, sodass sich ein Rückkopplung bildete, die das ganze System lahmlegte.

Was haben wir unternommen, um das Problem zu beheben?
Das Erste, was wir nach Deaktivierung des Modus getan haben, war, den dazugehörigen MMS zu separieren und einen eigenen Dienst einzurichten.  Das war nicht nur notwendig, um zu verhindern, dass ein Stau die anderen Modi beeinträchtigt, sondern auch, um so oft wie nötig am Dienst feilen zu können, damit die Spielwiese so schnell wie möglich wieder online gehen konnte. Wir haben es mit immer stärker veränderter Architektur probiert und nach jedem Schritt ausgiebig getestet, bis wir akzeptable Rahmenbedingungen geschaffen hatten, um den Modus wieder zu aktivieren.

Als wir die Wurzel des Problems (ein Session-Rückstau auf den lokalen Listen) ausfindig gemacht hatten, lautete die Lösung, die Sessions von anderen Knotenpunkten neu zu verteilen, um sicherzustellen, dass keine wiederholten Anfragen stattfinden.  Nun, da das System immer wieder regionale Kapazitäten von überlasteten auf niedrig belastete Punkte umschichtete, war die Chance geringer, dass der Knotenpunkt einer bestimmten Region überfordert wird, denn die Notwendigkeit einer Suche außerhalb der eigenen Liste war drastisch reduziert.  Obwohl dies in den primären Spielmodi von Fortnite Battle Royale bisher kein Problem darstellte, wollen wir dieses Upgrade auch auf die MMS-Hauptmechanik anzuwenden, damit das System in Zukunft stabiler läuft.

Während der MMS-Umstrukturierung haben wir den Ladeprozess bis an seine Grenzen getestet, denn der simulierte Umfang lag weit über dem, was normale Testmuster vorsehen.  Wir haben viele Millionen theoretischer Benutzer kreiert und sie allesamt auf unseren Spielwiese-MMS losgelassen, um das Umverteilungssystem an seine Grenzen zu bringen.  Der Kreislauf aus Optimierung, Test und Evaluation dauerte zwei Stunden pro Testlauf, ermöglichte es uns aber, das Systemverhalten zu überarbeiten und bis zu dem Punkt auszubalancieren, an dem wir befanden, dass es dem Traffic gewachsen war. Außerdem haben wir die Zeit genutzt, um während des Prozesses anfallende Bugs zu beheben, die den Versuch, die Spielwiese wieder online zu stellen, möglicherweise torpediert hätten.

Was haben wir aus der Sache gelernt?
In alle Kürze: Wir haben eine Menge über unser eigenes Spielersuchesystem und seine Fehler gelernt.  Wir hatten auf Basis unserer Spieleranzahl geplant und uns auf das vorbereitet, was wir für die maximale Belastung für die Spielersuche hielten, und obendrein einen guten Puffer einberechnet. Leider hatten wir dabei nicht vorhergesehen, was ein plötzlicher Spieleransturm den lokalen Listen antun kann.

Und mit dem Neustart des Modus haben wir noch eine Erfahrung gemacht.  Wir wollten die Spielwiese in kleinen Schritten pro Region und Plattform zurückbringen, und zwar mit dem Ziel, die Systembelastung zu reduzieren und im Livebetrieb gegebenenfalls anzupassen.  Allerdings haben wir damit das Gegenteil erreicht, denn die Spieler haben einfach in die Regionen gewechselt, die den Modus bereits unterstützten und uns damit erneut Kapazitätsprobleme beschert.  Das Gute an alldem ist, dass wir jetzt über eine deutlich verbesserte Sichtbarkeit der Cloud-Ressourcen in Asien verfügen. An dieser Stelle also ein Gruß an unsere Cloud-Partner, die uns geholfen haben, unser System schnell anzupassen!

Der Prozess, die Spielwiese für unsere Spieler zu stabilisieren, war schwieriger als erhofft, aber ein nachhaltiger Weckruf, dass komplexe Systeme eben manchmal auf unvorhersehbare Weise reagieren.  Wir mussten an unserer Spielersuche signifikante Not-Upgrades durchführen, die dem Spiel wirklich guttun und in Zukunft eine solide Basis für eine wachsende Community bieten sollten.