Ich habe Ubuntu 14.10 auf einem Server installiert. Die Hauptaufgabe des Servers besteht darin, eine MongoDB-Installation zusammen mit mehreren NodeJS-Anwendungen auszuführen. Die NodeJS-Anwendungen werden kontinuierlich ausgeführt und akzeptieren Anfragen von außen.
Hin und wieder kommen große Anfragen herein, die dazu führen, dass einige NodeJS-Anwendungen für kurze Zeit viel RAM verwenden. Ich habe versucht, dies zu überwachen, bin mir aber nicht sicher, was ich aus meinen Erkenntnissen machen soll.
Bisher habe ich zwei Befehle verwendet, um Einblicke in die RAM-Nutzung zu erhalten. Diese sind
free -m
Und
sudo htop
Das erste zeigt Folgendes:
total used free shared buffers cached
Mem: 3442 3158 283 6 111 1203
-/+ buffers/cache: 1842 1599
Swap: 0 0 0
Wenn ich mir das anschaue, würde ich sagen, dass etwa 280 MB RAM frei sind. Das scheint nicht viel zu sein.
htop sagt mir folgendes:
1 [||| 0.8%] Tasks: 61, 129 thr; 2 running
2 [||| 1.0%] Load average: 1.16 1.15 0.93
Mem[|||||||||||||||||||||||||||||||||||||1979/3442MB] Uptime: 29 days, 00:23:31
Swp[ 0/0MB]
Ich weiß nicht wirklich, wie ich das lesen soll. Kann mir hier jemand weiterhelfen?
Ich denke, meine Frage läuft letztlich auf Folgendes hinaus:
- Wie kann ich einen Einblick darüber erhalten, wie viel RAM verfügbar ist?
- Wann ist der RAM-Speicher zu wenig? Sind 300 MB zu wenig? Gefährlich wenig?
Antwort1
Kurz zusammengefasst: Solange die -/+ buffers/cache
Zeile genügend freien Speicher anzeigt, müssen Sie sich keine Sorgen machen. Wenn nur wenig freier Speicher angezeigt wird und Sie ständig swap
auf die Festplatte zugreifen müssen, müssen Sie sich Sorgen machen.
Erläuterung:
Sie sind mit Ihrem aktuellen RAM-Nutzungsszenario zufrieden. Sehen wir uns die Ausgabe an, um free -m
es aufzuschlüsseln:
Alle Spalten free -m
sind selbsterklärend. Wichtig ist, dass Sie nicht beunruhigt sein müssen, wenn die Speichernutzung hoch ist, ohne die Menge des zwischengespeicherten und gepufferten Speichers zu sehen.
Aus der Ausgabe geht hervor, dass Sie 3158 MB Ihres 3442 MB großen RAM verwendet haben. Eine einfache Subtraktion würde ergeben, dass Sie nur 283 MB frei haben, die Sie neuen Programmen zuweisen können. Das ist nicht richtig. Sie müssen sich auch die Spalten cached
und ansehen . Dort wird die Menge der im RAM zwischengespeicherten Daten auf der Festplatte angezeigt, um schneller auf die häufig verwendeten Dateien zugreifen zu können, und die Menge der Daten, die auf die Festplatte geschrieben werden sollen.buffers
cached
buffered
Wie Sie wissen, ist der Festplattenzugriff viel langsamer als der RAM. Um die Leistung zu verbessern, ist es daher sinnvoll, einige Festplattendaten im RAM zu speichern. Sie haben 1203 MB zwischengespeicherte und 111 MB gepufferte Daten. Es ist gut, dass Ihr Speicher diese Menge zwischenspeichert, ohne diese Menge RAM ungenutzt zu lassen. Dadurch wird Ihre Leistung erheblich verbessert.
Um die tatsächliche Menge an RAM zu ermitteln, die ohne Zwischenspeicherung/Pufferung verwendet wird, sehen Sie sich die -/+ buffers/cache:
Zeile an. Dieses Ergebnis wird angezeigt, wenn die zwischengespeicherte/gepufferte Menge abgezogen wird. Wie Sie sehen, haben Sie 1599 MB frei, also scheint in diesem Zustand alles in Ordnung zu sein. Wenn Sie sehen, dass die Werte in dieser Zeile niedrig sind, sollten Sie sich Sorgen machen und einen Blick auf die RAM-Nutzung werfen.
Beachten Sie auch, dass, wenn ein neues Programm gestartet werden soll und nach dem Zwischenspeichern nicht genügend Speicher vorhanden ist, die älteren Caches automatisch gelöscht werden, um Platz für das neue Programm zu schaffen. Solange die tatsächliche Speichernutzung nicht hoch ist und Sie kontinuierlich auf die Festplatte ausgelagert werden, ist es gut, eine beträchtliche Menge im Cache zu haben, da dies Ihren Speicher effizient „nutzt“.
Antwort2
.bashrc
heemayl hat bereits einen Großteil der Informationen zum tatsächlich verfügbaren Speicher abgedeckt. Mein Beitrag hier besteht lediglich aus ein paar Einzeilern, die Sie als Alias hinzufügen können, um einen schnellen Überblick über die tatsächliche Nutzung zu erhalten:
free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x }'
Und Beispielausgabe:
$ free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x }'
Used 1.2G Out of 5.6G
Wenn Sie an einer eingehenderen Untersuchung des Speichers interessiert sind, verwenden Sie cat /proc/meminfo
, das eine ganze Menge Informationen auflistet, unddieser Blogwird Ihnen helfen zu verstehen, wie free
der Befehl Dinge aus dieser Datei berechnet.