GNU/Linux >> Tutoriels Linux >  >> Linux

Quelque chose mange toute la mémoire (je soupçonne une fuite de mémoire sur certaines applications). Comment détecter quoi ?

Solution 1 :

Exécution de top en mode batch pour signaler périodiquement les tailles de mémoire peut être utilisé pour voir qui utilise la mémoire lorsque les choses vont mal. Exécuter sar en mode batch devrait donner de bons diagnostics sur l'utilisation de la mémoire et les E/S associées. Exécution munin pour surveiller le système devrait vous donner un graphique avec de bons détails sur l'utilisation de la mémoire. Cela peut aider beaucoup.

Vous pouvez utiliser limits.conf pour limiter la taille maximale du cœur des programmes. Correctement configuré, cela devrait tuer tous les programmes qui ont une fuite de mémoire. Cela fonctionne avec le module pam_limits. Des limites peuvent également être définies avec le ulimits commande.

Vous exécutez quelques programmes qui peuvent utiliser de grandes quantités de mémoire. Certaines choses que vous pourriez regarder incluent.

  • Applications mal programmées exécutées sous apache2 peut perdre de la mémoire. Vous devriez voir la taille de la mémoire augmenter lorsque cela se produit. Vous pouvez régler apache2 pour recycler les enfants après un certain nombre d'utilisations en définissant MaxRequestsPerChild à 100 ou plus. Si cela résout le problème, vous devez résoudre la fuite. Je regarderais ça en premier.
  • MySQL peut essayer de charger des données en mémoire. Si vous avez beaucoup de données en mémoire, cela peut provoquer des problèmes, mais ne devrait pas être aussi dramatique que vous le voyez.
  • Si vous avez un grand tmpfs système de fichiers monté, vous risquez de perdre de la mémoire si les fichiers ne sont pas supprimés lorsqu'ils sont utilisés. Les fichiers volumineux à longue durée de vie peuvent également poser problème.
  • Si le problème se produit à peu près à la même heure de la journée, il se peut qu'un programme planifié présente une fuite de mémoire.
  • Si vous avez un programme qui alloue de la mémoire partagée, mais ne la libère pas avant de quitter, vous aurez une fuite de mémoire relativement invisible. Si la mémoire partagée est verrouillée en mémoire, cela peut forcer l'échange. La quantité de mémoire partagée disponible est généralement relativement limitée.
  • L'ensemble liquidsoap+icecast peut rencontrer des problèmes de mise en mémoire tampon qui utilisent de la mémoire. Je n'ai pas utilisé cette combinaison, donc je ne sais pas comment cela apparaîtrait.

Utilisation normale de la mémoire :la mémoire libre n'est pas quelque chose que vous voulez beaucoup. Si votre système fonctionne depuis longtemps et dispose de beaucoup de mémoire libre, quelque chose ne va pas. Chaque fois que vous lisez ou écrivez un fichier, les blocs iront dans le cache tampon. Cela réduira votre mémoire libre, et c'est une bonne chose. Le système conservera suffisamment d'espace libre pour démarrer quelques programmes sans chercher ailleurs de la mémoire. Comme de nombreux programmes s'exécutent rapidement, leur mémoire sera restituée au pool libre lorsqu'ils cesseront de s'exécuter.

Lorsque vous lisez un fichier qui se trouve dans le cache tampon, aucun accès au disque n'est requis et la lecture est résolue à partir du cache tampon. Les écritures utilisent un mécanisme similaire. Si votre système a besoin de mémoire, le cache tampon est l'un des premiers endroits qui est utilisé. La plupart des tampons peuvent être libérés immédiatement.

Si vous avez une fuite de mémoire, vous verrez de la mémoire libre et des tampons commencer à diminuer. Ce n'est toujours pas un problème grave, car la mémoire perdue devrait éventuellement être déplacée vers l'espace d'échange. Votre système fonctionnera toujours correctement jusqu'à ce que vous remplissiez l'espace d'échange et réduisiez l'espace libre restant au point où les programmes ne peuvent pas être démarrés. Il est typique qu'une petite quantité d'espace d'échange puisse être utilisée.

Solution 2 :

Vous pouvez utiliser cette commande pour voir les 10 applications les plus utilisées concernant l'utilisation de la RAM :

ps -A --sort -rss -o comm,pmem | head -n 11

Parfois, cette commande vous aide si de nombreux sous-processus ont été générés :

ps auxf

De cette façon, vous pouvez voir quels processus vont ensemble.

Solution 3 :

Rien n'utilise vraiment cette mémoire en termes d'applications.

Vous devez déduire la valeur 'cached' qui représente le cache de la page pour avoir une meilleure idée de votre utilisation réelle de la mémoire en termes d'utilisation du programme.

Fondamentalement, c'est une bonne gestion de la mémoire et c'est idéalement ce que vous voulez.

Voir le lien ici pour plus d'informations :http://www.linuxatemyram.com/


Linux
  1. Comment supprimer les tampons de mémoire et le cache sous Linux

  2. Comment les programmes Unix idiomatiques détectent-ils le préfixe sous lequel ils sont installés ?

  3. Comment détecter une fuite de mémoire ?

  4. Comment calculer l'utilisation de la mémoire sous Linux en utilisant sar, ps et free

  5. Comment savoir si suffisamment de mémoire est libre pour déployer une nouvelle application sur une machine Linux ?

Comment vérifier l'utilisation de la mémoire sous Linux

Comment interpréter l'utilisation de la mémoire Top/htop ?

Comment enregistrer la consommation de mémoire sous Linux ?

Linux :savoir quel processus utilise toute la RAM ?

Comment supprimer tous les fichiers d'un répertoire sauf certains ?

Chrome mange toute la RAM et bloque le système