Come verificare quale processo utilizza la maggior parte della memoria


33

Quando accedo freea uno dei server Prod, viene visualizzato il 70% della memoria:

             total       used       free     shared    buffers     cached
Mem:     164923172  141171860   23751312          0    4555616   20648048
-/+ buffers/cache:  115968196   48954976
Swap:      8388600          0    8388600

Ma non ho trovato quale processo sta usando la memoria, ho provato il topcomando e sta mostrando processo usando solo la memoria 1.1 e 5.4%

Come posso trovare quale processo utilizza la memoria?

Di seguito sono riportati i risultati dei comandi principali:

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


Grazie per la rapida risposta, c'è un modo per controllare cosa sono tutti i file aperti e quale file sta mangiando memeory.

1
Prova a ordinare l' output principale : durante l'esecuzione, premi Maiusc + m
Eenoku

Risposte:


50

Questo ti mostrerà i primi 10 processi che utilizzano più memoria:

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

usando top: quando hai aperto top press maccorcia il processo in base all'utilizzo della memoria.

Ma questo non risolverà il tuo problema, in Linux tutto è file o processo. quindi anche i file che hai aperto consumeranno la memoria. quindi questo non aiuterà.

lsof ti darà tutti i file aperti con le dimensioni del file o l'offset del file in byte.


5
È possibile utilizzare al headposto di questo script awk: fornisce lo stesso output e ti salva a scrivere molti strani personaggi.
polistirolo vola il


6

È possibile reindirizzare ps e ordinare per ottenere il processo utilizzando la maggior quantità di memoria. Ti permetterà anche di specificare altri dettagli del processo che desideri vedere con esso:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

PS: quanto sopra presuppone che la colonna di memoria sia prima " sort -k 1 -n -r "


3

È possibile utilizzare il comando slabtop per visualizzare quali oggetti slab vengono utilizzati dal kernel.
Inoltre puoi controllare l'output di / proc / meminfo

Cerca queste 2 righe nell'output

Slab:              68136 kB
SReclaimable:      21208 kB 

L'esempio sopra mostra 68 MB di cache slab utilizzati dal kernel e 21 MB possono essere recuperati. Per richiedere la restituzione puoi utilizzare la tecnica descritta qui 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

Per un'analisi interattiva, è possibile utilizzare htop, quindi premere il tasto funzione F6per scegliere l'ordinamento, ad esempio PERCENT_CPU(utilizzo della memoria in percentuale), M_RESIDENT(dimensione della memoria residente, la memoria reale utilizzata), M_SIZE(dimensione della memoria virtuale) o M_SHARE(dimensione di memoria condivisa). I primi due sono i numeri rilevanti .

Le linee verdi sono fili. Hit (maiuscolo) Ke Hper nasconderli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.