Nach einer Diskussion, die HIER darüber geführt hat, wie PHP-FPM
viel Speicher verbraucht wird, habe ich gerade ein Problem beim Lesen des befehlsspezifischen Speichers festgestellt top
. Hier ist ein Screenshot von meinem top
kurz nach dem Neustart PHP-FPM
. Alles ist normal: Etwa 20 PHP-FPM
Prozesse verbrauchen jeweils 5,5 MB Speicher (0,3% der Gesamtmenge).
Hier ist der gealterte Server kurz vor dem Neustart PHP-FPM
(einen Tag nach dem vorherigen Neustart). Hier haben wir noch etwa 25 PHP-FPM
mit doppelter Speicherauslastung (10 MB, was 0,5% der Gesamtauslastung entspricht). Daher sollte der Gesamtspeicher 600-700 MB betragen. Warum wurde dann 1,6 GB Speicher verwendet?
free
identisch.Antworten:
TL, DR 1
Ihr Server befindet sich in einer Art virtuozzo / openvz / virtualization-du-jour- Container. Der Versuch, die Speichernutzung zu verstehen, führt dazu, dass die Windmühlen kippen.
TL, DR 2
Linux hat Ihren Arbeitsspeicher aufgefressen! Aber das ist okay, es tut es allen an.
Die lange Geschichte
Lassen Sie es uns brechen!
In der
Mem:
Sektion haben wir:$n total
: Die Größe des physischen Arbeitsspeichers in Ihrem Computer$n used
: wie viel Speicher wird von Linux verbraucht, nicht nur die Summe der Prozesse.$n free
: Wie viel RAM wird von Linux nicht verbraucht. Dies berücksichtigt nicht, dass zwischengespeicherter und gepufferter Speicher im Wesentlichen "frei" ist.$n buffers
: In diesem Puffer werden Blöcke der Festplatten-E / A gespeichert, die gelesen wurden oder auf die ein Schreibvorgang wartet. Ein Puffer ist eine RAM-Darstellung eines einzelnen Plattenblocks.In der
Swap:
Sektion haben wir:$n total
: Selbsterklärend. Menge des verfügbaren Speicherplatzes zum Auslagern von Seiten.$n used
: Selbsterklärend. Wie viel Speicherplatz für den Plattenaustausch verwendet wird.$n free
: Ich Idiot.$n cache
: In enger Beziehung zu den oben genannten Puffern. Es ist tatsächlich Teil des Seiten-Cache und hat selbst keinen Platz auf der physischen Festplatte. Mach dir keine Sorgen über die Details für dieses Gespräch.Der interessante Teil kommt, wenn Sie laufen
free -m
. Sie sehen drei Zeilen, und alle Zahlen entsprechen der oberen Zeile. Ich werde meinen eigenen PC als Beispiel geben:Die Mem-Zeile zeigt den gesamten RAM in Megabyte (
$n total
oben), wie viel ($n used
oben) verwendet wird, wie viel frei ($n free
oben) ist, wie viel geteilt wird (ignoriere das) und jetzt kommt der gute Teil! Die Spaltenbuffers
undcached
infree -m
korrelieren vorhersehbar mit$n buffers
und$n cache
. Aber werfen Sie einen Blick auf die zweite Reihe, mit derfree -m
das beginnt-/+ buffers/cache:
. Die Mathematik zeigt, dass die verwendete Menge wirklich (total) - ((used-puffer) -cached ist. Kostenlos ist (total) - (theNewUsed).Was bedeutet das alles? Es bedeutet, dass Linux Ihren RAM gefressen hat! Die kurze Geschichte ist, dass der Linux-Kernel den Arbeitsspeicher verschlingt, da er für das Zwischenspeichern von Festplatten zur Verfügung steht. Sie können nichts dagegen tun, wenn Sie nicht Lust haben, einen benutzerdefinierten Kernel zu kompilieren. Profi-Tipp: Nicht.
Der Arbeitsspeicher ist wirklich vorhanden und kann von den Prozessen nach Belieben genutzt werden. Das ist es, was mit der
-/+ buffers/cache:
Reihe in gemeint istfree -m
. Sie befinden sich jedoch in einem Virtualisierungscontainer ohne Hyper-Visor, der die Dinge etwas unruhig macht. Sie können zu diesem Zeitpunkt einfach keine bytegenaue Bestandsaufnahme Ihres Speichers durchführen. Sie sehen jedoch kein schrecklich ungewöhnliches Verhalten.Bleib ruhig und mach weiter. Besorgen Sie sich auch einen physischen Server (es sei denn, Sie möchten Speicherstatistiken, die so aussehen, als wäre Kreskin Ihr SysAdmin).
quelle
Top ist nicht der beste Weg, um die Speichernutzung zu überprüfen. Da meine Frage jedoch als Duplikat dieser Frage markiert wurde, werde ich meine Entschließung hier veröffentlichen.
Ich habe in einem Forum gelesen , dass ps_mem.py die Speichernutzung für Sie überprüft.
Repository: https://github.com/pixelb/ps_mem/
Herunterladen:
Verwendung:
Ausgabe:
quelle