Game-Lag-Whitepaper › Nach Symptom suchen
Verschluckte Aktion / Rollback: 36 Ursachen und Zuständigkeiten
Auch genannt: Skill verschluckt, Item wieder weg, Handel fehlgeschlagen
Im interaktiven Symptomkatalog mit Grafiken öffnen →
Eine eindeutig ausgeführte Aktion gilt plötzlich als nie passiert, oder ihr Ergebnis wird deutlich später rückgängig gemacht.
Skill gedrückt, aber er löst nicht aus. Ein gekauftes Item verschwindet, oder nach dem Neuverbinden ist der Stand von vor einigen Minuten wiederhergestellt.
Die Anfrage ging verloren (Paketverlust, Warteschlangenüberlauf), der Server hat anders entschieden, als es auf dem eigenen Bildschirm aussah (unterschiedlicher Entscheidungszeitpunkt, Ablehnung nach clientseitigem Feedback), oder das Speichern schlug fehl (DB-Sperre oder DB-Störung, Serverabsturz).
Ursachen dieses Symptoms
L1 Spielprozess auf dem Client
- Fehler bei der Uhrensynchronisation: Liegt die vom Client geschätzte Serverzeit daneben, stimmen Interpolationszeitpunkt und Cooldown-Prüfung nicht mehr. (Client-Entwicklung (Entwicklungsteam))
L5 Netzwerkgeräte im Rechenzentrum
- Verbindungs- und Portlimits des Cloud-NAT-Gateways: Verbindungen von Servern in einem privaten Subnetz nach außen (Plattform-Authentifizierung, Zahlung, externe APIs) laufen über ein NAT-Gateway, das Adresse und Port umschreibt. Übersteigen die gleichzeitigen Verbindungen zum selben Ziel das Port-Limit des Gateways, schlagen neue Verbindungen fehl. (Netzwerk-Infrastruktur (Infrastrukturteam))
- Microbursts am Switch: Senden mehrere Server im selben Moment Pakete an Tausende Spieler, läuft der kleine Puffer am Switch-Port, an dem dieser Traffic zusammenläuft, in weniger als 1 ms über. (Server-Entwicklung (Entwicklungsteam))
L6 Netzwerkkarte des Servers
- Zu kleiner Ringpuffer: Ist der Ringpuffer klein, in dem die NIC Pakete kurz ablegt, läuft er bei kurzen Lastspitzen über, und Pakete werden verworfen. (Server-Infrastruktur (Infrastrukturteam))
- Überschrittenes PPS-Limit in der Cloud: Cloud-Server haben je nach Typ Limits für Pakete pro Sekunde und Bandbreite. Was darüber hinausgeht, wird stillschweigend verworfen. (Server-Infrastruktur (Infrastrukturteam))
L7 Server-OS (Kernel)
- OOM-Killer: Geht der Arbeitsspeicher aus, wählt Linux den Prozess mit dem größten Speicherverbrauch und beendet ihn zwangsweise. Meist trifft es den Spielserver. (Server-Entwicklung (Entwicklungsteam))
- Sprung der Systemuhr (NTP-Step): Wird die Serveruhr auf einen Schlag um einige Sekunden vor- oder zurückgestellt, lösen Timer, die von der Systemuhr abhängen, gesammelt aus oder bleiben stehen. (Server-Entwicklung (Entwicklungsteam))
- Erschöpfte ephemere Ports bei Verbindungen zwischen Servern: Baut der Spielserver Verbindungen zur DB oder zu anderen Servern häufig nur kurz auf und wieder ab, belegen beendete Verbindungen ihren Port noch eine Weile, und neue Verbindungen lassen sich nicht mehr öffnen. (Server-Entwicklung (Entwicklungsteam))
L8 Sockets und Protokolle
- Retransmission-Einstellungen bei zuverlässigem UDP: Sind die selbst gebauten Retransmission-Regeln auf UDP zu vorsichtig, erholt sich die Übertragung erst spät. Sind sie zu aggressiv, verstopfen sie die Leitung zusätzlich. (Server-Entwicklung (Entwicklungsteam))
L9 Spielprozess auf dem Server
- Rückstau in der Message-Queue: Kommen Anfragen schneller herein, als sie verarbeitet werden, stauen sie sich in der Warteschlange. Spätere Anfragen werden dann erst nach einigen Sekunden verarbeitet oder verworfen. (Server-Entwicklung (Entwicklungsteam))
- Serverabsturz: Stürzt der Serverprozess durch einen unbehandelten Fehler ab, bricht für alle auf diesem Server gleichzeitig die Verbindung ab. (Server-Entwicklung (Entwicklungsteam))
- Patch verändert das Traffic-Muster: Vergrößern neue Inhalte, Effekte oder synchronisierte Felder die Pakete oder erhöhen ihre Frequenz, stößt ein bisher stabiler Server nach dem Patch an Grenzen bei MTU, Bandbreite oder Paketzahl. (Server-Entwicklung (Entwicklungsteam))
L11 Datenträger
- Datenträger voll: Füllen angesammelte Logs und Dumps den Datenträger, schlagen Schreibvorgänge fehl. Ohne Vorkehrungen stürzt der Server ab. (Server-Infrastruktur (Infrastrukturteam))
L12 Datenbank
- Hot-Row-Lock-Contention: Wollen alle dieselbe Zeile ändern (Gildenlager, begehrtes Item im Auktionshaus, serverweiter Zähler), bekommt immer nur einer den Lock. (Server-Entwicklung (Entwicklungsteam))
- DB-Deadlock: Warten zwei Transaktionen (DB-Operationen, die als ein Paket verarbeitet werden) jeweils auf eine Zeile, die die andere gesperrt hat, bricht die DB eine davon zwangsweise ab. (Server-Entwicklung (Entwicklungsteam))
- Replikationsverzögerung: Geschrieben wird in die Primär-DB, gelesen aus dem Replikat. Hinkt das Replikat hinterher, ist gerade Geschriebenes dort noch nicht zu sehen. (DB-Infrastruktur (Infrastrukturteam))
- Große Batch-Jobs: Laufen Ranglistenberechnung, Massenversand von Ingame-Post oder das Aufräumen alter Daten im laufenden Betrieb, belegen sie Locks und Datenträger. (Server-Entwicklung (Entwicklungsteam))
- DB-Failover: Fällt die Primär-DB aus und wird auf die Reserve-DB umgeschaltet, sind währenddessen keine Schreibvorgänge möglich, und die letzten noch nicht replizierten Daten können verloren gehen. (DB-Infrastruktur (Infrastrukturteam))
- Fortschrittsverlust durch lange Speicherintervalle: Wird zur Lastsenkung nur alle paar Minuten gespeichert, geht der Fortschritt verloren, wenn der Server dazwischen abstürzt. (Server-Entwicklung (Entwicklungsteam))
- Lange offene Transaktion: Bleibt eine Transaktion lange offen, hält sie ihre Locks weiter, und die DB kann alte Datenversionen nicht bereinigen (Purge). Dadurch wird alles nach und nach langsamer. (Server-Entwicklung (Entwicklungsteam))
- Locks durch Schemaänderung (DDL) im laufenden Betrieb: Werden einer Tabelle im laufenden Betrieb Spalten oder Indizes hinzugefügt, kann ein einziger, nur kurz benötigter Lock alle Anfragen auf diese Tabelle warten lassen. (DB-Infrastruktur (Infrastrukturteam))
L13 Serverarchitektur und Betrieb
- Ausfall eines Zusatzservers: Fällt ein Server aus, der getrennt vom Spielserver läuft, etwa für Chat, Gruppen oder das Auktionshaus, funktioniert nur diese eine Funktion nicht mehr. (Server-Entwicklung (Entwicklungsteam))
- Uhrenabweichung zwischen Servern: Gehen die Uhren der Server leicht unterschiedlich, werden Cooldowns, Buffs und Eventstarts auf jedem Server etwas anders bewertet. (Server-Infrastruktur (Infrastrukturteam))
- Abhängigkeit von externen Diensten: Sind externe Dienste wie Plattform-Login, Zahlung oder Identitätsprüfung langsam oder ausgefallen, bleibt der Vorgang an diesem Schritt hängen. (Extern (Extern))
- Fehlerhaftes Matchmaking oder falsche Regionszuweisung: Wird ein Spieler einem Server in einer weit entfernten Region zugewiesen, obwohl es eine nähere gibt, hat genau dieser Spieler dauerhaft hohen Ping, auch wenn seine Leitung in Ordnung ist. (Server-Entwicklung (Entwicklungsteam))
- Abgelaufenes oder falsch konfiguriertes TLS-Zertifikat: Läuft das Zertifikat eines Login-, API- oder Patchservers ab oder fehlt ein Zwischenzertifikat, scheitern ab diesem Moment die TLS-Verbindungen aller Clients, die sich neu verbinden. (Netzwerk-Infrastruktur (Infrastrukturteam))
Synchronisationsdesign
- Kein Input-Buffering für Skills: Lässt sich der nächste Skill erst auslösen, wenn der Server das Ende des vorigen bestätigt hat, schiebt sich zwischen alle Skills einer Kombo ein Round Trip. (Client-Entwicklung (Entwicklungsteam))
- Kurze Zeitfenster, die der Ping aufzehrt: Ist die Reaktionszeit für Ausweichen, Parieren oder Blocken kurz, zehrt der Ping sie auf, und manche Angriffe lassen sich gar nicht mehr vermeiden. (Server-Entwicklung (Entwicklungsteam))
- Trefferabfrage ohne Lag-Compensation: Prüft der Server Treffer nur gegen die „aktuelle Position auf dem Server“, weicht die Trefferabfrage von dem ab, was man auf dem eigenen Bildschirm gesehen hat. (Server-Entwicklung (Entwicklungsteam))
- Übermäßige Lag-Compensation: Spult der Server für den Angreifer zu weit zurück, wird der Getroffene noch erwischt, obwohl er schon in Deckung ist. (Server-Entwicklung (Entwicklungsteam))
- Client-Autorität: Entscheidet jeder Client selbst über seine Ergebnisse, läuft es auf dem eigenen Bildschirm flüssig. Die Ergebnisse weichen aber von denen auf anderen Bildschirmen ab, und das System ist anfällig für Cheats. (Server-Entwicklung (Entwicklungsteam))
- Zu strenge Servervalidierung: Prüft der Server Bewegungsgeschwindigkeit, Cooldowns und Reichweite zu streng, lehnt er auch normale Eingaben ab, die durch Jitter gebündelt ankommen. (Server-Entwicklung (Entwicklungsteam))
- Ablehnung durch den Server nach clientseitigem Feedback: Erkennt der Server einen Treffer oder Skill, den der eigene Bildschirm schon gezeigt hat, nachträglich nicht an, wird ein eindeutig gesehenes Ergebnis rückgängig gemacht. (Client-Entwicklung (Entwicklungsteam))
- Niedrige Snapshot-Senderate: Sendet der Server Positionsupdates (Snapshots) nur wenige Male pro Sekunde, muss der Interpolationspuffer entsprechend lang sein, und andere Charaktere erscheinen weiter in der Vergangenheit. (Server-Entwicklung (Entwicklungsteam))
Probleme, die nur einige betreffen
Interaktiven Symptomkatalog mit Grafiken ansehen