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

Game-Lag-Whitepaper › L13 Serverarchitektur und Betrieb

Überlastung durch Logging und Monitoring Logging / monitoring overhead

Ursachen-ID in-monitoring · Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Server-Infrastruktur (Infrastrukturteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Bei einer Störung explodiert die Logmenge, und Server, die Logs synchron weitergeben, werden durch das Logging noch langsamer.

Warum Fehler treten auf, das Volumen von Logs und Metriken schießt hoch → Folge Log-Collector kommt nicht nach, Server mit synchronem Versand warten → Auf dem Bildschirm Ruckeln und Freezes während der Störung werden durch das Logging verstärkt

Symptome
Ruckeln, Freeze
Faktoren
Stillstand
Wer ist betroffen
Ganzer Server
Wann
Bei großem Andrang, Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Server-Infrastruktur (Infrastrukturteam)
Aufgaben Entwicklungsteam
Asynchron senden, Sampling, bei vollem Puffer verwerfen, gleiche Fehlermeldungen gebündelt senden.
Aufgaben Infrastrukturteam
Kapazität des Log-Collectors auf das Spitzenvolumen bei Störungen auslegen, Alarm bei Rückstau im Collector.
Im Graphen
Vereinzelte Spitzen ohne Muster · Logvolumen, Warteschlange des Log-Collectors
Wo nachsehen
Logzeilen und Bytes pro Sekunde auf dem Server sowie Warteschlange und verworfene Einträge des Log-Agents zusammen mit der Tick-Zeit auswerten. Bei hängenden Threads mit bcc offcputime -p prüfen, ob sie beim Schreiben oder Versenden von Logs warten
Spricht dafür
Zum Zeitpunkt der Tick-Spitze steigt die Logmenge um einen zweistelligen Faktor über den Normalwert, und die Wartezeit des Game-Threads konzentriert sich auf Call-Stacks des Log-Schreibens und -Versands
Spricht dagegen
Logmenge normal oder Game-Thread wartet nicht beim Logging: Die Log-Flut ist nur eine Folge der Störung, die Ursache des ersten Fehlers gesondert suchen
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)

Quellen

  1. Logging in C# Microsoft
    .NET-Logmethoden sind synchron. Bei langsamem Speicherziel wird empfohlen, zuerst in einen schnellen Speicher zu schreiben und später zu verschieben
  2. Asynchronous loggers Apache Software Foundation
    Asynchrones Logging fängt kurze Spitzen mit einer Queue ab. Bleibt die Ausgabe dauerhaft langsam, füllt sich die Queue, und das Tempo fällt auf das der langsamsten Ausgabe zurück, oder Logs werden je nach Richtlinie verworfen (Discard)
  3. Demonstrations of offcputime, the Linux eBPF/bcc version IO Visor
    Summiert die Zeit, in der Threads angehalten waren und die CPU verlassen hatten (off-CPU), pro Call-Stack, -p wählt den Prozess

Verwandte Ursachen

Gleiche Schicht: L13 Serverarchitektur und Betrieb

Ursachen aus anderen Schichten mit demselben Symptom (Ruckeln)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen