Lorsque je vérifie free
sur l'un 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 commande top
et elle montre le processus utilisant la mémoire uniquement 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
Cela vous montrera les 10 principaux processus utilisant le plus de mémoire:
ps aux --sort=-%mem | awk 'NR<=10{print $0}'
en utilisant top: lorsque vous avez ouvert top, appuyez sur m
raccourcira le processus 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.
Votre bélier n'est pas réellement utilisé. Linux met simplement en cache ce qui se trouve sur votre disque par défaut, et place ce qu'il met en cache dans la section "utilisée" de ram.
Si vous chargez des applications qui utilisent réellement cette RAM, ce sera leur utilisation.
Vous pouvez diriger ps et sort 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"
Vous pouvez utiliser la commande slabtop pour afficher les objets slab 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
Pour une analyse interactive, vous pouvez utiliser htop
, puis appuyer sur la touche de fonction F6
pour 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, mémoire réelle utilisée), M_SIZE
(taille de la mémoire virtuelle) ou M_SHARE
(taille de la mémoire partagée). Les deux premiers sont les nombres pertinents .
Les lignes vertes sont des fils. Appuyez sur (majuscules) K
et H
pour les masquer.