Frage Analysieren der Linux NFS-Serverleistung


Ich würde gerne eine Analyse unseres NFS-Servers durchführen, um mögliche Engpässe in unseren Anwendungen aufzuspüren. Auf dem Server wird SUSE Enterprise Linux 10 ausgeführt.

Die Art von Dingen, die ich wissen möchte, sind:

  • Auf welche Dateien wird von welchen Clients zugegriffen
  • Lesen / Schreiben des Durchsatzes pro Client
  • Overhead, der durch andere RPC-Aufrufe auferlegt wird
  • Wartezeit für andere NFS-Anforderungen oder Datenträger-E / A, um einen Client zu bedienen

Ich kenne bereits die verfügbaren Statistiken in /proc/net/rpc/nfsd und tatsächlich schrieb ich ein Blogeintrag beschreibt sie in der Tiefe. Ich suche nach einer Möglichkeit, tiefer zu graben und zu verstehen, welche Faktoren zur Leistung eines bestimmten Kunden beitragen. Ich möchte die Rolle analysieren, die der NFS-Server bei der Leistung einer Anwendung in unserem Cluster spielt, damit ich über Wege nachdenken kann, wie ich ihn am besten optimieren kann.


20
2017-07-10 03:33


Ursprung


Dies scheint die Art von Ding zu sein, für die der System-Tap geschrieben wurde. Die Dokumente sind ein bisschen Mist, aber ich denke, Sie könnten etwas auspeitschen, um diese Art von Analyse zu benutzen. sourceware.org/systemtab/examples/keyword-index.html - Cian


Antworten:


Nur eine Idee, versuchen Sie Nfs Verkehr mit wireshark zu erschnüffeln. Könnte Ihnen sagen, welcher Benutzer auf welche Datei zugegriffen hat:

tshark -R nfs -i eth0

2
2017-07-10 13:08





Ich muss von all den verschiedenen * stat Dienstprogrammen, die einem zur Verfügung stehen, sagen, nfsstat ist mit Abstand das schlechteste! Es gibt Ihnen die Möglichkeit, eine Reihe von Zählern zu sehen, aber das ist alles. Wenn man sie zweimal anschaut, muss man versuchen, herauszufinden, um wie viel sich jeder Zähler ändert, und wenn man die Änderungsrate wissen möchte, muss man die Anzahl der Sekunden zwischen den Samples dividieren. Nfsstat stammt aus fairen Gründen aus vielen Jahren, als die Dinge noch ziemlich grob waren und nun von niemandem behindert wird, der das Ausgabeformat ändern möchte, weil es wahrscheinlich viele Dinge kaputt machen würde.

Was die Verwendung von collectl für die Überwachung von nfs betrifft, liefert es die nfsstat-Ausgabe in einem viel einfacher zu lesenden Format, aber was noch besser ist, Sie können es Stunden oder Tage laufen lassen und die Daten, die Sie im Hintergrund gesammelt haben, wiedergeben. Was die Prozesse betrifft, kann collectl auch Prozessdaten erfassen, einschließlich der Anzahl der E / A-Vorgänge, die er ausführt, und sogar die wichtigsten I / O-Benutzer anzeigen. Sie können das Top-Feature auch in Echtzeit verwenden.

Wenn Sie das Disketten-Thema selbst betrachten wollen, können Sie das auch tun und alles in einer koordinierten Anzeige anzeigen.

Hör zu... -Kennzeichen


2
2017-07-13 10:41





Samml (besonders sein NFS-Subsystem) ist ein sehr nettes Dienstprogramm, das für Ihre Analyse nützlich sein könnte, aber es tut nicht passen Sie Ihre Anforderungsliste an. Ich kenne kein Linux-Dienstprogramm, das dies tut.

(Bitte lassen Sie mich diese Off-Topic-Notiz hinzufügen: Dort ist Software, die Ihren Anforderungen entspricht: Suns DTrace-basiert Analyse (pdf) - ist aber leider nicht auf Linux verfügbar. Sie finden viele gute Beispiele in Brendan Greggs Blog welche die Fähigkeiten dieses Werkzeugs veranschaulichen.)


2
2017-07-11 10:27





Schauen Sie sich Nfsstat an. Es zeigt nicht alles, was Sie wollen, aber zumindest eine gute Untermenge.

http://linux.die.net/man/8/nfsstat


1
2017-07-12 21:56





Meiner Meinung nach zeigt dies genau das Problem mit den heutigen Tools. Hier sind wir mindestens 3 einschließlich nfsstat, iostat und iotop erwähnt. Dann gab es eine vorübergehende Erwähnung von "Wireshare" und "Nfsreplay". Klingt das wirklich nach einem normalen Weg? Anders als wireshark mit ist eine Kategorie ganz eigene, würden Sie nicht 1 Werkzeug bevorzugen?

Für Opener, während ich die Ausgabe von Iostat sehr nützlich finde, ist es zu schwer zu lesen mit all diesen .00 in den Zahlen. Collectl meldet genau die gleichen Daten, formatiert sie aber viel einfacher für die Augen. Sie wissen bereits, was ich von nfsstat halte, und da collectl alle Daten wiedergeben kann, ist kein "Replay" -Programm erforderlich. Wie bei 'iotop' kann collect auch Prozesse anzeigen, die nach allem sortiert sind, was zu I / O gehört.

Also hast du alles mit Timestamps. Wenn Sie ein feineres Überwachungsintervall benötigen, können Sie das Sampling immer auf 0,1 oder 0,5 Sekunden oder etwas dazwischen zurückstellen, obwohl Sie mehr Overhead generieren, wenn Sie Prozesse so schnell überwachen, aber mit jedem Prozessüberwachungsprogramm.

UND der letzte Bonus ist alles, was Sie mit collectl sammeln, Sie können in eine Tabelle laden und einfach plotten oder verwenden Sie colplot, die Teil von collectl-utils ist.

-Kennzeichen


1
2017-11-14 12:07





Vielleicht möchten Sie es versuchen nfswatch von http://nfswatch.sourceforge.net

Sie können einige Beispielausgaben an sehen http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/

nfswatch ist irgendwie wie top (obwohl ich nicht sicher bin, ob es einen Batch-Modus gibt). Sobald es ausgeführt wird, können Sie die Anzeige ändern, indem Sie eine Taste drücken (z. B. "c", um NFS-Clients anzuzeigen, die Ihren NFS-Server verwenden).

Bei meinen kurzen Tests nfswatch scheint nicht mit NFSv4 zu arbeiten.


1
2017-10-26 20:24



Interessanter Vorschlag. Eigentlich sagt der Autor selbst, dass NFSv4 nicht unterstützt wird und das Tool seit ca. 3 Jahren nicht mehr aktualisiert wurde. Schade, denn es wäre von großem Nutzen! - Tonin


Ich habe im Moment keine besseren Antworten, allerdings kann man Disk IO sehr genau mit verfolgen

iostat -mx <delay in sec.> <devices>

Es gibt sehr nützliche Zahlen, insbesondere die durchschnittliche Warteschlangengröße und die Wartezeit (in ms) für Ihre IOs. Es zeigt ziemlich leicht, wenn Ihre Festplatten ein Flaschenhals sind, und wenn der Engpass IO-Anzahl oder Durchsatz ist.

Dann mit

netstat -plaute | grep nfs

Sie sehen die Clientverbindungen und die Bytes, die von jedem Client in Echtzeit übertragen werden. Schleife für kontinuierliche Daten. Es wäre ziemlich einfach ein Skript zu erstellen, das kontinuierliche Daten liefert ... Ich arbeite daran :)

Um IO pro Prozess zu erhalten, können Sie das Excellent verwenden Iotop. Sie müssen jedoch immer noch eine Möglichkeit finden, nfsd-Prozesse mit den Clients abzugleichen.

Auf welche Dateien von welchem ​​Client zugegriffen wird, ich stecke fest. Dateien, die derzeit von einem NFS-Client gelesen / geschrieben werden, erscheinen nicht einmal in der Ausgabe von lsof.

Um den netstat zu erweitern, verwenden Sie watch -d, um zu sehen, wie sich die Dinge ändern und nach Host sortieren

watch -d "netstat -plaute | grep nfs | sort -k 4,5"

1
2017-07-10 10:21



Dies ist die beste Lösung, die ich bisher gefunden habe, um herauszufinden, welcher Host den Datenverkehr auf NFS verursacht. Dann kann ich zum Client gehen, um herauszufinden, auf welche Datei er zugreift. Vielen Dank! - peschü


Vielleicht möchten Sie nfsreplay auschecken. Es könnte Ihnen helfen, herauszufinden, was passiert. Auch finden Sie möglicherweise die Informationen und Links Hier sinnvoll


0
2017-07-12 06:27