Die übersetzen doch Texte usw, nicht unbedingt Ankündigungen. Keine Ahnung, ob es überhaupt noch eins für D3 oder D2R gibt.
Hier mal Teil 1. Meine Güte, was für eine Wall of text. Und ich bitte um Verzeihung, mit den Informatik-Fachtermini kenne ich mich nun echt nicht aus und hab da bestimmt was falsch übersetzt.
Falls wer noch den Rest benötigt: bitte melden, ich hab morgen noch Urlaub.
Hallo an alle,
seit dem D2R release hatten wir verschiedene Probleme mit den Servern und wollten jetzt ein bisschen Transparenz bezüglich der Ursachen dieser Probleme und der Schritte, die wir unternommen haben, um sie zu beseitigen, herstellen.
Außerdem möchten wir euch Einblick in unsere weitere Arbeit gewähren.
Zu lang, Kurzfassung: Unsere Serverausfälle lassen sich nicht auf eine singuläre Ursache zurückführen; wir lösen jedes Problem so wie es entsteht, wir versuchen, die Probleme abzumildern und langfristige Umbaumaßnahmen. Einige wenige Spieler:innen bemerkten einen Verlust des Fortschritts ihrer Charaktere. Sofern diese auf einen Serverausfall zurückzuführen sind, sollte es sich dabei nur um wenige Minuten handeln. Dies ist für uns keine vollständige Lösung und wir arbeiten weiter an diesem Problem. Unser Team – mit der Hilfe von anderen Kolleg:innen bei Blizzard – arbeiten daran, eine Spielerfahrung zu kreiieren, mit der sich jede:r wohlfühlt.
Wir müssen hier in die Tiefen der technischen Besonderheiten hinabsteigen, aber hoffen, dass es zum Verständnis beiträgt, warum diese Ausfälle auftreten und was wir gegen jeden einzelnen tun. Außerdem suchen wir die dahinter liegende Ursache.
Fangen wir am Anfang an.
Serverproblem(e):
Bevor wir über Probleme reden, geben wir euch ein bisschen Hintergrundinformation wie unsere Serverdatenbanken funktionieren. Zunächst gibt es eine globale Datenbank, die als einzelne Quelle der Wahrheit für all eure Charakterinformation und – fortschritt fungiert. Wie ihr euch vorstellen könnt, ist dies eine große Aufgabe für eine einzelne Datenbank und das könnte sie gar nicht allein schaffen. Um also die Last und Latenz auf unserer globalen Datenbank verringern, hat jede Region – NA, EU, Asien – individuelle Datenbanken, die ebenfalls Charakterinformation und – fortschritt speichern. Die Datenbank eurer Region schreibt regelmäßig an die globale. Die meisten eurer in-game Aktionen werden in dieser Datenbank abgearbeitet, weil sie schneller ist. Eure Charaktere sind darin „eingeschlossen“, um die Integrität der individuellen Charakter-Historie zu erhalten. Die globale Datenbank hat außerdem back-up, falls etwas schiefgeht.
Mit diesem Wissen im Hinterkopf fokussieren wir auf den Ausfällen zwischen dem 9.10. und (jetzt), um zu erklären, was passiert:
Am diesem Samstagmorgen (Pacific time, gemeint ist der 9.10.) gab es einen globalen Ausfall wegen eines plötzlichen, signifikanten Anstiegs im Traffic. Dies erreichte einen neuen Schwellenwert, den unsere Server noch nie erlebt hatten, nicht einmal am Release, und wurde verschlimmert durch ein Update, welches wir am Tag zuvor ausgebracht hatten, um die Performance rund um die Spielerstellung zu verbessern. Diese beiden Faktoren zusammen waren zu viel für unsere globale Datenbank, dadurch kam es zum Ausfall.
Wir entschieden, das Freitags-Update zurückzusetzen und hofften, dass so die Last auf den Servern gemindert werden würde. Außerdem hofften wir, dass wir dadurch Zeit bekämen, um über den Sonntag an die Wurzel des Problems zu kommen.
Am Sonntag wurde allerdings klar, dass alles, was wir am Samstag getan hatten, nicht genug war – der Traffic wurde sogar noch stärker und es kam zu einem weiteren Ausfall. Unsere Spielserver bemerkten den Verbindungsabbruch zur Datenbank und versuchten sofort und wiederholt, sich wieder zu verbinden, dadurch konnte die Datenbank nicht aufholen, was wir in der Zwischenzeit erledigt hatten, weil sie permanent mit den Anfragen der Server beschäftigt war. Währenddessen bemerkten wir, dass wir außerdem Verbesserungen in der Konfiguration unserer Datenbank-Event Logger machen könnten, die unbedingt notwendig sind, um wieder einen vernünftigen Status zu erreichen, falls die Datenbank ausfällt. Wir erledigten dies und suchten weiter nach der Wurzel des Übels.
Das zweischneidige Schwert des Sonntagsausfalls war, dass das, womit wir am Samstag beschäftigt waren – eine Anleitung, wie die Datenbank sich schneller erholt – eigentlich gut war, aber weil wir so schnell damit online gegangen waren, während so viele Spieler:innen aktiv waren, fiel alles wieder aus. Das war nicht gut.
Es mussten also viele Fixes erledigt werden, einschließlich Konfiguration und Code Verbesserungen, die wir auf das Backup der globalen Datenbank bringen mussten. Dies führt uns zu Montag, dem 11.10., als wir zwischen den globalen Datenbanken hin und her wechselten. Das führte zu einem weiteren Ausfall, weil die Backup Datenbank fehlerhafterweise ihren Backup-Prozess weiterlaufen ließ, d.h. sie verbrachte den Hauptteil ihrer Zeit damit, von der anderen Datenbank Kopien anlegen zu wollen, während sie eigentlich Serveranfragen hätte verarbeiten sollen.
Während dieser Zeit entdeckten wir weitere Probleme und verbesserten weiter. Wir fanden ein (unverständlicher Fachbegriff) Anfragen-Dings, welches wir vollständig von der Datenbank entfernen konnten, optimierten Verfügbarkeits-Checks für Spieler:innen, die einem Spiel beitreten wollen und verminderten die Last weiter. Während wir hier schreiben, verbessern wir die Performance kontinuierlich weiter bzw. testen entsprechende Verbesserungen. Wir glauben, dass wir die Datenbank-Wiederverbindungsstürme repariert haben, weil am Dienstag keine aufgetreten sind.
Am Dienstag gab es ein weiteres Hoch der Spieler:innen-Anzahl, mit mehreren Hunderttausenden Spieler:innen pro Region. Dadurch hatten wir einen anderen Zwischenfall mit verminderter Datenbank-Performance, woran wir weiter arbeiten. Außerdem haben wir weitere Leute bei Blizzard und auch außerhalb gefragt, die uns bei kleineren Fixes helfen sollen, weil unser eigenes Team auf die Server-Probleme fokussiert ist.
Warum passiert dies:
Um so nah am Originalspiel wie möglich zu bleiben, behielten wir eine Menge original Code. Einer dieser alten Services kämpft besonders mit dem Verhalten moderner Spieler:innen und befasst sich sich mit elementaren Teilen der Spielfunktionalität, vor allem Spielerstellung/-beitritt, Updates/Lesen/Filtern von Spiellisten, Verifizieren der Server-Gesundheit und Charaktere aus der Datenbank auslesen, um sicherzustellen, dass die richtigen Daten je nach Filter ausgelesen werden. Dieser Service ist einfach, man kann nur eine Instanz davon laufen lassen, um sicherzustellen, dasst alle Spieler:innen zu jeder Zeit die aktuellste und richtige Spielliste sehen. Wir haben diesen Service in vielerlei Hinsicht optimiert, damit er mit der modernen Technologie mithält, aber eine Menge unserer Probleme basieren auf der Spielerstellung.
Wir erwähnen „Verhalten moderner Spieler:innen“, weil es interessant ist, darüber nachzudenken. 2001 gab es nicht annähernd so viele Inhalte im Internet, wie D2 „richtig“ gespielt werden sollte […]. Heutzutage kann ein neuer Spieler (oder eine neue Spielerin) jede Menge spannende Sachen finden, die ihm oder ihr beibringen, wie das Spiel gespielt werden kann. Viel davon beinhaltet eine Menge Datenbank-Anfragen in Form von Erstellen, Laden und Löschen von Spielen kurz nacheinander. Wir hatten dies zwar vorhergesehen – weil Spieler:innen frische Charaktere auf frischen Servern erstellen und dann hart daran arbeiten, ihre Magiefund-Items zu finden, aber wir hatten das Ausmaß aufgrund der Beta-Tests weit unterschätzt.
Zusätzlich speichern wir wohl zu oft auf die globale Datenbank. Das ist nicht notwendig. Wir sollten euch lieber auf der regionalen Datenbank speichern und nur im Notfall auf die globale, das ist eine der Verbesserungen, die wir unternommen haben und wofür wir momentan den Code schreiben, damit es vollständig passiert und wir fast nie auf die globale Datenbank speichern, was die Last auf diesem Server signifikant reduzieren wird. Es wird einige Zeit benötigen: erstellen, testen, implementieren.