Comment vérifier quel processus utilise le plus de mémoire


33

Lorsque j'archive l' freeun des serveurs Prod, cela indique que 70% de la mémoire est utilisée:

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

Mais je n'ai pas trouvé quel processus utilise la mémoire, j'ai essayé la topcommande et elle montre le processus utilisant uniquement la mémoire 1.1 et 5.4%

Comment savoir quel processus utilise la mémoire?

Voici les meilleurs résultats de commande:

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


Merci pour la réponse rapide, Existe-t-il un moyen de vérifier ce que tous les fichiers ouverts et quel fichier mange de la mémoire.

1
Essayez de trier la sortie supérieure - lors de l'exécution, appuyez sur Maj + m
Eenoku

Réponses:


50

Cela vous montrera les 10 principaux processus utilisant le plus de mémoire:

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

using top: lorsque vous avez ouvert top, mle processus sera court en fonction de l'utilisation de la mémoire.

Mais cela ne résoudra pas votre problème, sous Linux, tout est fichier ou processus. de sorte que les fichiers que vous avez ouverts consommeront également la mémoire. donc cela n'aidera pas.

lsof vous donnera tous les fichiers ouverts avec la taille du fichier ou le décalage du fichier en octets.


5
Vous pouvez utiliser à la headplace de ce script awk - il donne la même sortie et vous vous épargnez en écrivant de nombreux caractères étranges.
voler en polystyrène


6

Vous pouvez diriger ps et trier pour obtenir le processus en utilisant le plus de mémoire. Il vous permettra également de spécifier d'autres détails de processus que vous souhaitez voir avec:

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

PS: ce qui précède suppose que votre colonne de mémoire est d'abord " sort -k 1 -n -r "


3

Vous pouvez utiliser la commande slabtop pour voir quels objets de dalle sont utilisés par le noyau.
Vous pouvez également vérifier la sortie de / proc / meminfo

Recherchez ces 2 lignes dans la sortie

Slab:              68136 kB
SReclaimable:      21208 kB 

L'exemple ci-dessus montre que 68 Mo de cache de dalle sont utilisés par le noyau et 21 Mo peuvent être récupérés. Pour récupérer, vous pouvez utiliser la technique décrite ici 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

Pour une analyse interactive, vous pouvez utiliser htop, puis appuyer sur la touche de fonction F6pour choisir l'ordre de tri, par exemple PERCENT_CPU(utilisation de la mémoire en pourcentage), M_RESIDENT(taille de la mémoire résidente, la mémoire réelle utilisée), M_SIZE(taille de la mémoire virtuelle) ou M_SHARE(taille de la memoire partagée). Les deux premiers sont les numéros pertinents .

Les lignes vertes sont des fils. Appuyez sur (majuscules) Ket Hpour les masquer.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.