한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › L12 Datenbank

Fortschrittsverlust durch lange Speicherintervalle Periodic save window

Ursachen-ID db-save-interval · Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt DB-Infrastruktur (Infrastrukturteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Wird zur Lastsenkung nur alle paar Minuten gespeichert, geht der Fortschritt verloren, wenn der Server dazwischen abstürzt.

Warum Charakterzustand wird nur alle paar Minuten gespeichert → Folge Dazwischen Serverabsturz oder Störung → Auf dem Bildschirm Nach dem Reconnect Stand von vor einigen Minuten (Rollback)

Symptome
Verschluckte Aktion / Rollback
Faktoren
Paketverlust
Wer ist betroffen
Ganzer Server, Bestimmter Ort oder Kanal
Wann
Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt DB-Infrastruktur (Infrastrukturteam)
Aufgaben Entwicklungsteam
Wichtige Ereignisse (Handel, seltene Beute) sofort speichern, Änderungslog führen.
Aufgaben Infrastrukturteam
Prüfen, ob die DB genug IOPS- und CPU-Reserven für die zusätzlichen Schreibvorgänge bei kürzeren Speicherintervallen hat.
Im Graphen
Verbindungen brechen gleichzeitig ab · Anzahl der Verbindungen, Rollback-Meldungen
Wo nachsehen
Zeitpunkt von Absturz oder Störung neben den letzten Speicherzeitpunkt der Charaktere legen, für die ein Rollback gemeldet wurde (Speicherlog des Spielservers oder Spalte mit dem Änderungszeitpunkt in der DB)
Spricht dafür
Der zurückgesetzte Stand entspricht dem letzten Speicherzeitpunkt vor dem Absturz, die verlorene Zeit ist kürzer als das Speicherintervall
Spricht dagegen
Laut Spielserver-Log wurde das Speichern abgeschlossen, trotzdem zurückgesetzt: Datenverlust beim DB-Failover (db-failover) oder alter Wert aus dem Replikat (db-replica-lag)
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig

Quellen

  1. Asynchronous Commit (PostgreSQL Documentation) PostgreSQL
    Werden Schreibvorgänge gesammelt und verzögert auf den Datenträger geschrieben, steigt der Durchsatz, bei einem Ausfall können aber die jüngsten Transaktionen verloren gehen (derselbe Zielkonflikt)
  2. Redis persistence Redis
    Bei RDB-Snapshots alle paar Minuten muss man bei einem unerwarteten Beenden mit dem Verlust der Daten der letzten Minuten rechnen

Verwandte Ursachen

Gleiche Schicht: L12 Datenbank

Ursachen aus anderen Schichten mit demselben Symptom (Verschluckte Aktion / Rollback)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen