KVM Serverperformance grenzwertig > Analyse?

  • Einer meiner Server (der älteste) leidet schon seit einigen Wochen unter massiven Performanceproblemen. Nun frage ich mich, wie ich das Problem am besten analysieren kann.


    Soviel zu zum System.


    Ich habe teilweise sehr lange Verzögerungen beim Booten, beim Aufrufen von Websites, beim installieren von apt Paketen.
    Ein einfaches apt-get install hdparm dauerte z.B. fast 10 Minuten.


    Die Festplatte selbst gibt sehr unterschiedliche Leistung preis:


    iotop:

    Code
    1. Total DISK READ: 0.00 B/s | Total DISK WRITE: 503.17 K/s
    2. TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
    3. 169 be/3 root 0.00 B/s 27.52 K/s 0.00 % 70.00 % [jbd2/dm-0-8]
    4. 4864 be/4 mysql 0.00 B/s 98.27 K/s 0.00 % 25.61 % mysqld --based~ock --port=3306
    5. 4342 be/4 mysql 0.00 B/s 125.79 K/s 0.00 % 2.78 % mysqld --based~ock --port=3306
    6. 4147 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.02 % mysqld --based~ock --port=3306
    7. 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init [2]
    8. 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]


    Ich werde aus den angezeigten Daten leider nicht ganz schlau bzw. kann mir nicht erklären, wo sich hier der Flaschenhals befinden könnte.


    Viele Grüße,
    Dorian

    Kommt in die inoffizielle Netcup Support-Gruppe auf Telegram: https://t.me/nc_chat :*

  • Auf solche Messungen wirken sich unterschiedliche Faktoren aus:
    a) Caching; zum einen "lokal" innerhalb der virtuellen Maschine, zum anderen extern auf dem Storagesystem
    b) Zeitmessung; Bist Du sicher, dass die Zeit korrekt gemessen ist, selbst wenn der Host zwischendrin eine andere virtuelle Maschine rechnen lässt?
    c) Dateisystem: Mit Caching werden Daten nicht sofort geschrieben. Aber wenn Daten geschrieben werden, bisweilen mehr als eigentlich an der Reihe wären. Dann hat das Dateisystem aber jeweils verschieden lange Zeit zu erkennen, dass kein Inhalt in Deinen Dateien ist, und die Daten mit Löchern ("wo nichts ist, schreibe ich auch Nichts") oder komprimiert ("beim Lesen hier 84.000.000 Mal '0' ausgeben") zu schreiben.
    d) CPU-Affinität: Wie oft wurde die für das Schreiben verantwortliche CPU gewechselt und die neue CPU musste erst den Zwischstand des Vorgangs laden?
    e) Zulieferung der Test-Daten: Wurden die zu schreibenden Daten wirklich ausreichend schnell zur Verfügung gestellt (bei /dev/zero eher kein Problem)?
    f) Fragmentierung: Muss der virtuelle Gast auf der virtuellen Festplatte erst Platz zusammenstückeln? Muss das Storage-System Platz zusammensuchen?


    D.h. mit diesen Messdaten kann man nicht mal erkennen, dass überhaupt ein Flaschenhals besteht. apt-get install ist für die Messung eher nicht geeignet, da es keine typische Aufgabe des Servers ist oder betreibst Du einen Debeian-buildd? Der Debian-Boot-Prozess hat an einigen Stellen sehr lange Wartezyklen drin.


    Du hast ohnehin ein Monitoring laufen, damit solltest Du mal eine Langzeitmessung vornehmen: Was dauert bei Websites lang. Gibt es Ausreißer? Wann? Wie viele?

  • Hallo .A., ich werde mich mit Munin nochmal eingehender beschäftigen und auswerten. Ich finds nur schwer nachvollziehbar, dass die eigentliche Schreibgeschwindigkeit (Caching hin oder her) so sehr schwankt. Ich werde nochmal Dateien mit zufälligen Daten generieren und diese dann kopieren.


    Bzgl. apt-get: da das System Debian installiert hat, denke ich dass es eine angewandte Testmethode sein könnte, zumal sich die Zeit deutlich von meinen anderen Systemen unterscheidet (am Beispiel eines frischen Systems ging die Installation von beispielsweise hdparm innerhalb weniger Sekunden vonstatten.


    Ich werde weitertesten und (soweit ich das testen kann, da Produktivsystem) nochmals die verschiedenen Dienste abschalten und vergleichen.

    Kommt in die inoffizielle Netcup Support-Gruppe auf Telegram: https://t.me/nc_chat :*

  • Aktuell habe ich wieder lange Verzögerungen beim Zugriff auf den Server bzw. darauf gehostete Websites. Munin zeigt mir folgende Werte für die letzte Zeit. Ich kann darin jedoch schlecht einen "Bottleneck" erkennen. Was könnte ich übersehen haben?


    2016-11-24 11_59_12-Mozilla Firefox.png
    2016-11-24 12_26_28-Munin __ localdomain __ localhost.localdomain.png
    2016-11-24 12_27_54-Munin __ localdomain __ localhost.localdomain.png
    2016-11-24 12_28_10-Munin __ localdomain __ localhost.localdomain.png
    2016-11-24 12_28_18-Munin __ localdomain __ localhost.localdomain.png


    Viele Grüße,
    Dorian

    Kommt in die inoffizielle Netcup Support-Gruppe auf Telegram: https://t.me/nc_chat :*

  • Ich habe seit dem 19. November ähnliche Probleme mit meinem Server (RS2000 G7 SE). Ohne irgendetwas verändert zu haben, hat sich die Disk Latency drastisch erhöht. Auch ein Neustart oder das Stoppen aller LXC-Container hat zu keiner Verbesserung geführt. Wahrscheinlich beansprucht ab dem 19. November ein anderer Kunde sehr viel "Festplattenleistung" auf dem Node. Ich beobachte dieses Verhalten noch eine Weile. Momentan sind mir noch keine längeren Ladezeiten für meine Anwendungen aufgefallen. Daher sieht es nur auf dem Papier besorgniserregend aus.


    Anbei mal einige Munin-Diagramme von meinem betroffenen System.

  • jbr27 : Um zu sehen, ob man die Abbildung erst dann zu sehen bekommt, wenn Diese über die Funktion "Bild einfügen" hinzugefügt wird, habe mir mal erlaubt, einer deiner Abbildungen einfach mal hier erneut reinzustellen.



    Da man leider nichts von deiner Abbildung hier sieht, sieht es mittlerweile so aus, dass die Funktion "Bild einfügen" nicht mehr funktioniert.


    jbr27 , Tolive und killerbees19 : Nun funktioniert es:
    1. Lokale auf seiner eigenen Festplatte liegende Abbildung als Anhang hochladen
    2. Link-Adresse der als Anhang hochgeladenen Abbildung kopieren
    3. Kopierte Link-Adresse in der Dialog Box "Bild einfügen" im Editfeld URL rein kopieren und mit OK bestätigen

  • Andreas : Funktioniert doch einwandfrei? Mit dem IMG-BBCode konnte man doch nie etwas posten, das keine JPG/GIF/PNG Endung hat? Oder was meinst Du?


    Code
    1. [img]https://www.happytec.at/fotos/pferde_1/tn-11.jpg[/img]
    2. [attach]1322[/attach]


    [Blocked Image: https://www.happytec.at/fotos/pferde_1/tn-11.jpg]


    Screenshot_20161111-205540.png



    MfG Christian

  • Nochmal zurück zum eigentlichen Thema:


    Eine Defragmentierung hat leider auch keine Verbesserung der Disk Latency bewirkt. Zur Zeit logge ich mit atop mal alle Prozesse mit, habe aber zu den "Spitzenzeiten" noch keinen Schuldigen gefunden.
    Da es ein Produktivsystem ist, kann ich leider erst nächstes Wochenende nachts mal das Rettungssystem booten und die Disk Latency überprüfen.

  • <OFFTOPIC>
    Kann ich mal eine realistische Frage stellen? Wieso betreibt man mehrere Maschinen auf einer bereits virtuellen Maschine? Hin oder her ob es LXC, VMware oder Proxmox ist wieso mache ich sowas? Diese Technik ist doch schon auf dem Papier total ineffizient und in der Realität bekommt man Probleme, die vermutlich noch keiner so in der Form gesehen hat.
    <OFFTOPIC>
    Sieht man ja in deinen Fall mit der hohen Platten Latenz. Meine Vermutung läuft ganz stark darauf hinaus, dass der Treiber damit nicht richtig umgehen kann. Aufgrund das er nicht dafür konzipiert ist oder ggf. kaputt. Falls einer mir einen trifftigen Grund nennen kann, sowas machen zu wollen mit wohlgemerkt produktiven Zeug, dann lasse ich mich da gerne eines besseren belehren.

  • Falls einer mir einen trifftigen Grund nennen kann, sowas machen zu wollen mit wohlgemerkt produktiven Zeug, dann lasse ich mich da gerne eines besseren belehren.


    Auf meinem Server laufen zurzeit jeweils in einem einzelnen LXC-Container:
    - DNS (bind)
    - Git (gogs)
    - Mail (Mailcow (dovecot, postfix, nginx, php5-fpm))
    - munin
    - sharelatex (docker, mongodb, redis-server)
    - GPS-Tracking für Flottenmanagement (traccar)
    - web (nginx, php7.0-fpm, mysql-server)


    Für jeden Container sind nur die benötigten Ports per iptables freigeben. Die Kommunikation untereinander erfolgt in einem internen Netz.
    Für die Zukunft ist noch der Umstieg auf BTRFS geplant, womit die Container besser schneller gesichert werden können.
    Bei kritischen Updates kann der Container geklont oder ein Snapshot angelegt werden. Läuft etwas schief, kann ohne merkliche Downtime alles zurückgespielt werden.


    Wenn BTRFS jeweils auf dem Haupt- und Backupsystem vorhanden ist, können die Container in Sekunden umgezogen werden (Wartungsarbeiten, neuer Server, usw.)


    Zumindest für meine Bedürfnisse habe ich mit meinem Lösungsweg bisher nur gute Erfahrungen sammeln können. Schöner wären natürlich einzelne vServer oder ein richtiger dedizierter Server. Das alles würde aber deutlich mehr als 12,99€ im Monat kosten.

  • Du möchtest BTRFS auch noch dazu implementieren. Damit ist für mich das Thema komplett durch. Besonders scheinen das Unternehmes Anwendungen zu sein, die nicht Redudant ausgeführt werden...


    Wir fassen zusammen:

    • LXC auf einer KVM-Maschine da kann ich noch bissl Verständnis zusammen kratzen
    • Keine Redudanz bei Kritischen Anwendungen
    • BTRFS als Dateisystem Unterbau verwenden
    • edit: Monitoring auf den zu monitorenden Server.
    • Ich klink mich raus.
    • BTRFS als Dateisystem Unterbau verwenden
    • Ich klink mich raus.


    BTRFS läuft auf meinem Testsystem mit LXC-Containern seit einem halben Jahr ohne Probleme. Hätte ich jetzt hunderte an Kunden oder eine große Firma, würde ich sicherlich auch konservativer an die Sache herangehen. Für unser Familienunternehmen (< 10 Mitarbeiter) hält sich das Risiko (mit Backups) in Grenzen.


    Hätte ich jetzt bereits BTRFS auf dem Produktivsystem, wären die Container schon längst auf einen neuen Server migriert und das Problem damit behoben.

  • Ich weiß nicht so genau warum ich noch Antworte, aber du solltest schnell den Unterschied zwischen Testsystem und Produktivsystem lernen. Es spielt absolut keine Rolle wie groß das Unternehmen ist oder welcher Art, wir sind in einem Zeitalter angekommen wo so ziemlich alles von Technik abhängig gemacht wird. Wenn du mir jetzt sagen möchtest, dass es erst ab einer entsprechende Unternehmensgröße Sinn macht über Backup und anständigem Hosting nachzudenken. Dann tut es mir echt leid das ist für mich in keiner Weise vertretbar. Vermutlich muss dir erst mal alles richtig um die Ohren fliegen damit du den ernst der Lage begreifst.


    Ich bin jetzt wirklich raus, weil ich es absolut nicht verstehen kann wie man so handeln kann. Vielleicht nehme ich es auch zu Emotional dann verstehe ich nicht zwingend alles.