So überprüfen Sie, welcher Prozess den meisten Speicher belegt


33

Wenn ich freeeinen 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 topBefehl 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


Vielen Dank für die schnelle Antwort. Gibt es eine Möglichkeit, zu überprüfen, was für alle geöffneten Dateien und welche Datei sich im Speicher befindet?

1
Versuchen Sie, die höchste Ausgabe zu sortieren. Drücken Sie beim Ausführen die
Tastenkombination

Antworten:


50

Dies zeigt Ihnen, dass die Top-10-Prozesse den meisten Speicher belegen:

ps aux --sort=-%mem | awk 'NR<=10{print $0}'

using top: Wenn Sie top press öffnen, mwird 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.


5
Sie können headanstelle dieses awk-Skripts verwenden - es gibt die gleiche Ausgabe und Sie sparen sich das Schreiben vieler seltsamer Zeichen.
Styropor fliegen


6

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 -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

PS: Das oben Gesagte setzt voraus, dass Ihre Speicherspalte zuerst " sort -k 1 -n -r " ist.


3

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

Slab:              68136 kB
SReclaimable:      21208 kB 

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

echo 2 > /proc/sys/vm/drop_caches  

1

Für eine interaktive Analyse können Sie htopmit der Funktionstaste F6die Sortierreihenfolge auswählen, z. B. PERCENT_CPU(Speichernutzung in Prozent), M_RESIDENT(Größe des residenten Speichers, der tatsächlich verwendete Speicher), (Größe des M_SIZEvirtuellen Speichers) oder M_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) Kund H, um sie auszublenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.