Game-Lag-Whitepaper › Nach Symptom suchen
Zeitlupe: 24 Ursachen und Zuständigkeiten
Auch genannt: Die Welt läuft langsamer, alles wirkt zäh
Im interaktiven Symptomkatalog mit Grafiken öffnen →
Alles bewegt sich langsamer. Skill-Casts und Monsterbewegungen wirken in die Länge gezogen. Je nach Serverdesign bleibt das Tempo auch gleich, und das Problem zeigt sich als Ruckeln oder Teleportieren.
Alle im selben Gebiet werden gemeinsam langsamer. Meist passiert das dort, wo sich viele Spieler versammeln.
Der Server schafft seine Ticks nicht mehr rechtzeitig. Die Leitung ist in Ordnung, daher bleibt der außerhalb des Spiels gemessene Ping gleich. Der Ping im Spiel kann leicht steigen, wenn Wartezeit in der Serververarbeitung mit hineingerechnet wird. Zu prüfen sind sprunghaft steigende Spielerzahlen, Sichtbereichsberechnung, Broadcast und Speichermangel.
Ursachen dieses Symptoms
L1 Spielprozess auf dem Client
- Aufholspirale bei festem Zeitschritt: Nach einem einzelnen Stillstand rechnet das Spiel die aufgelaufenen Schritte im Block nach und gerät genau dadurch erneut in Rückstand. (Client-Entwicklung (Entwicklungsteam))
L5 Netzwerkgeräte im Rechenzentrum
L7 Server-OS (Kernel)
- Zu viele Threads und Kontextwechsel: Laufen weit mehr Threads als Kerne, verbraucht das OS CPU-Zeit allein damit, sie abwechselnd auszuführen. (Server-Entwicklung (Entwicklungsteam))
- CPU-Throttling im Container (CFS-Quota): Hat ein Container ein CPU-Limit und verbraucht er sein Kontingent innerhalb der festen Periode (meist 100 ms), wird er für den Rest der Periode zwangsweise angehalten (Throttling). (Server-Infrastruktur (Infrastrukturteam))
- Latenzspitzen durch Energieverwaltung des Servers (C-States und Frequenzskalierung): Ungenutzte CPU-Kerne gehen zum Stromsparen in tiefe Energiesparzustände (C-States) und senken ihren Takt. Kommt ein Paket oder ein Timer, brauchen sie Zeit zum Aufwachen und Hochtakten, und die Verarbeitung kleiner Pakete verzögert sich. (Server-Infrastruktur (Infrastrukturteam))
- Zeitgesteuerte Jobs: Log-Komprimierung, Backups und Sicherheitsscans, die jeden Tag zur selben Zeit laufen, belegen CPU und Datenträger. (Server-Infrastruktur (Infrastrukturteam))
- Leistungsänderung nach OS-, Kernel-, Treiber- oder Firmware-Update: Der Spielcode ist unverändert, doch nach einem Update von Server-OS, Kernel, Treibern oder Firmware wird es langsamer. Updates können Standardwerte, den Scheduler, die Schutzmaßnahmen gegen CPU-Sicherheitslücken (Mitigations) und das Verhalten von Treibern ändern. (Server-Infrastruktur (Infrastrukturteam))
L8 Sockets und Protokolle
- Blockierendes Senden durch langsame Clients: Ist der Sendepuffer eines einzelnen Spielers mit langsamer Leitung voll und sendet der Server blockierend (der Aufruf kehrt erst zurück, wenn im Puffer wieder Platz ist), wartet der Server-Thread auf diesen einen Spieler. (Server-Entwicklung (Entwicklungsteam))
- Blockierende I/O-Architektur: Kann ein Thread nichts anderes tun, während er auf einen Socket wartet, wird mit steigender Spielerzahl alles langsamer. (Server-Entwicklung (Entwicklungsteam))
L9 Spielprozess auf dem Server
- Überschrittenes Tick-Budget: Passt die Arbeit eines Ticks nicht mehr ins Budget, dehnt sich das Tick-Intervall des Servers. Das ganze Gebiet läuft dann langsamer oder ruckelt. (Server-Entwicklung (Entwicklungsteam))
- Explodierende Sichtbereichsberechnung (AOI, N²): Wird für alle Spieler paarweise geprüft, wer wen sehen kann, wächst der Rechenaufwand bei 10-mal so vielen Spielern auf das 100-Fache. (Server-Entwicklung (Entwicklungsteam))
- Überlastetes Gebiet auf einem einzelnen Thread (Hotspot): Ist jedes Gebiet einem einzelnen Thread zugeordnet und drängen sich viele Spieler an einem Ort, läuft nur dieser eine Kern auf 100 %. (Server-Entwicklung (Entwicklungsteam))
- Pathfinding-Flut: Verfolgen Hunderte Monster gleichzeitig Spieler und berechnen dabei ihre Wege, kostet das viel CPU-Zeit. (Server-Entwicklung (Entwicklungsteam))
- Auf ein Ziel konzentrierter Kampf (Weltboss): Greifen Hunderte Spieler gleichzeitig einen einzigen Boss an, ballt sich die Berechnung auf diesen einen Boss, und jeder Treffer wird an alle gesendet, die ihn sehen. (Server-Entwicklung (Entwicklungsteam))
- Anhäufung von Objekten (nicht aufgeräumte Items und Beschwörungen): Werden Items am Boden, Beschwörungen und abgelaufene Timer, die längst verschwunden sein sollten, nicht aufgeräumt, wächst die Arbeit pro Tick, je länger der Server läuft. (Server-Entwicklung (Entwicklungsteam))
L10 Arbeitsspeicher
- Speicherleck: Nicht freigegebener Speicher sammelt sich nach und nach an und führt Tage später zu GC-Stürmen, Swapping oder zum erzwungenen Beenden des Prozesses. (Server-Entwicklung (Entwicklungsteam))
- GC-Thrashing (zu wenig Heap-Reserve): Nähern sich die lebenden Daten der Heap-Grenze, findet jede GC kaum noch etwas zum Freigeben, und die GC läuft ununterbrochen immer wieder. (Server-Entwicklung (Entwicklungsteam))
- Swap: Wird der Arbeitsspeicher knapp und lagert das OS einen Teil auf den Datenträger aus, wartet jeder Zugriff auf diesen Speicher auf einen über 1.000-mal langsameren Datenträger. (Server-Infrastruktur (Infrastrukturteam))
- Cache-Miss: Liegen Daten verstreut im Speicher, muss die CPU jedes Mal bis zum langsamen RAM gehen und warten. (Server-Entwicklung (Entwicklungsteam))
- Speicherfragmentierung: Zerfällt freier Speicher durch ständiges Allozieren und Freigeben in kleine Stücke, belegt der Prozess viel mehr Speicher, als er tatsächlich nutzt. (Server-Entwicklung (Entwicklungsteam))
- Entfernter NUMA-Speicher: Nutzt ein Prozess auf einem Server mit zwei CPUs Speicher, der an der anderen CPU hängt, werden die Zugriffe langsamer. (Server-Infrastruktur (Infrastrukturteam))
L11 Datenträger
- Aufgebrauchte Burst-Credits beim Cloud-Datenträger: Manche Cloud-Datenträger und kleine Servergrößen haben Burst-Credits, mit denen sie kurzzeitig schneller als ihre Basisleistung arbeiten. Dauert eine Lastphase lange und sind die Credits aufgebraucht, sinkt die Geschwindigkeit schlagartig. (Server-Infrastruktur (Infrastrukturteam))
L13 Serverarchitektur und Betrieb
- Verzögertes Autoscaling: Bei großem Andrang werden automatisch weitere Server gestartet, doch die Vorbereitung dauert einige Minuten. In dieser Zeit sind die vorhandenen Server überlastet. (Server-Infrastruktur (Infrastrukturteam))
- Zu viele Makros und Bots: Bots senden viel häufiger Anfragen als Menschen und zehren die Verarbeitungskapazität des Servers auf. (Server-Entwicklung (Entwicklungsteam))
Interaktiven Symptomkatalog mit Grafiken ansehen