Wenn ich free
einen Prod-Server einchecke , werden 70% des Arbeitsspeichers verwendet:
total used free shared buffers cached
Mem: 164923172 141171860 23751312 0 4555616 20648048
-/+ buffers/cache: 115968196 48954976
Swap: 8388600 0 8388600
Aber ich habe nicht gefunden, welcher Prozess den Speicher verwendet, ich habe den top
Befehl ausprobiert und er zeigt den Prozess nur unter Verwendung des Speichers an. 1.1 und 5.4%
Wie kann ich herausfinden, welcher Prozess den Speicher verwendet?
Unten sind die Ergebnisse des obersten Befehls aufgeführt:
15085 couchbas 25 0 2784m 2.4g 40m S 183.7 1.5 299597:00 beam.smp
28248 tibco 18 0 124m 100m 3440 S 20.9 0.1 2721:45 tibemsd
15334 couchbas 15 0 9114m 8.6g 3288 S 9.0 5.4 12996:28 memcached
15335 couchbas 18 0 6024 600 468 S 2.0 0.0 1704:54 sigar_port
15319 couchbas 15 0 775m 2516 944 S 0.7 0.0 269:13.41 i386-linux-godu
12167 tibco 16 0 11284 1464 784 R 0.3 0.0 0:00.04 top
12701 root 15 0 451m 427m 2140 S 0.3 0.3 18:25.02 controller
13163 root 11 -5 0 0 0 S 0.3 0.0 289:58.58 vxglm_thread
Antworten:
Dies zeigt Ihnen, dass die Top-10-Prozesse den meisten Speicher belegen:
using top: Wenn Sie top press öffnen,
m
wird der Vorgang aufgrund der Speichernutzung abgebrochen.Aber das wird Ihr Problem nicht lösen, in Linux ist alles entweder eine Datei oder ein Prozess. Die Dateien, die Sie geöffnet haben, belasten auch den Speicher. das wird also nicht helfen.
lsof
gibt Ihnen alle geöffneten Dateien mit der Größe der Datei oder dem Versatz der Datei in Bytes.quelle
head
anstelle dieses awk-Skripts verwenden - es gibt die gleiche Ausgabe und Sie sparen sich das Schreiben vieler seltsamer Zeichen.Dein Widder wird eigentlich nicht benutzt. Linux speichert die Inhalte auf Ihrer Festplatte standardmäßig im Cache und fügt sie in den Bereich "used" von RAM ein.
Wenn Sie Anwendungen laden, die tatsächlich diesen Arbeitsspeicher verwenden, wird dieser verwendet.
Siehe http://www.linuxatemyram.com/
quelle
Sie können ps leiten und sortieren , um den Prozess mit dem meisten Speicher abzurufen. Sie können auch andere Prozessdetails angeben, die Sie damit anzeigen möchten:
PS: Das oben Gesagte setzt voraus, dass Ihre Speicherspalte zuerst " sort -k 1 -n -r " ist.
quelle
Mit dem Befehl slabtop können Sie anzeigen, welche Plattenobjekte vom Kernel verwendet werden.
Sie können auch die Ausgabe von / proc / meminfo überprüfen
Suchen Sie nach diesen 2 Zeilen in der Ausgabe
Das obige Beispiel zeigt, dass 68 MB Slab-Cache vom Kernel verwendet werden und 21 MB zurückgefordert werden können. Zum Zurückfordern können Sie die hier beschriebene Technik verwenden: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/#s-memory-tunables
quelle
Für eine interaktive Analyse können Sie
htop
mit der FunktionstasteF6
die Sortierreihenfolge auswählen, z. B.PERCENT_CPU
(Speichernutzung in Prozent),M_RESIDENT
(Größe des residenten Speichers, der tatsächlich verwendete Speicher), (Größe desM_SIZE
virtuellen Speichers) oderM_SHARE
(Größe von geteilte Erinnerung). Die ersten beiden sind die relevanten Zahlen .Die grünen Linien sind Fäden. Drücken Sie (Großbuchstaben)
K
undH
, um sie auszublenden.quelle