Administration/Handbücher/Debugging eines Application-Servers

< Administration‎ | Handbücher
Version vom 17. August 2017, 12:10 Uhr von Floh1111 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Vorbereitung == Prüfe ob andere Benutzer eingeloggt sind: <pre> users </pre> Sind andere Benutzer eingeloggt, benachrichtige die Benutzer wenn du einen ko…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Vorbereitung

Prüfe ob andere Benutzer eingeloggt sind:

users

Sind andere Benutzer eingeloggt, benachrichtige die Benutzer wenn du einen konsistenten Zustand benötigst:

wall 'Achtung ich möchte diesen Server debuggen. Bitte nimm jetzt keine Änderungen vor. Du kannst mir eine Antwort auf diese Nachricht mit dem Befehl wall schicken.'

Systemd

Welche Units werden beim Booten geladen?

systemctl list-unit-files

Status der Units

systemctl

Felgeschlagene anzeigen

systemctl --failed

journald

Welche Units werden beim Booten geladen?

journalctl -b

Performance

Historiesche Analyse

Mit Munin. Folgende Werte ansehen und mit anderen Servern vergleichen:

  • Disk-IO
  • Disk-Latency
  • CPU (steal, softirq)
  • interrupts
  • Load ([verstehen])

Analyse der aktuellen Lage

[[1]], top und [[2]]

Analyse von Disk-IO

Fehlereingrenzung

  • Prüfe alle Dienste
    • Sind nur bestimmte Dienste betroffen, wenn ja welche?
    • Lassen sich zwischen den Diensten Gemeinsamkeiten finden (z.B. nur PHP-Anwendungen und Mail)?

Häufige Probleme

Einige Dienste offline während andere funktionieren

Problem: Das Problem äußert sich darin, dass bestimmte Dienste nicht erreichbar sind und einen Timeout (504 Gateway Time-out) liefern (z.B. alle Dienste mit einer Anbindung an den Datenbankserver wie Blog, Mail, Gitlab) während andere Dienste, die nicht an den Datenbankserver angebunden sind, erreichbar sind (z.B. Wiki, Pad). Das Monitoring des Servers zeigt keine Auffälligkeiten jedoch ist im Debug-Log eines Nginx-vHost zu sehen, dass php5-fpm einen Timeout liefert (setze "error_log /var/log/nginx/error_DIENST.log debug;").

Lösungsansatz 1: Anscheinend gibt es ein Problem bei der Verbindung zum Datenbankserver, welches sich nicht wie üblich durch eine Meldung "Database Connection failed" der Anwendung äußert. Grund könnte sein, dass das System versucht den Datenbankserver per IPv6 zu erreichen, während er durch einen Fehler nur per IPv4 angebunden ist. Überprüfe die Verbindung (siehe Technik/Dokumentation/Mysql und Technik/Dokumentation/PostgreSQL).