GNU/Linux >> Tutoriels Linux >  >> Linux

Aidez-nous à interpréter OOM-Killer

Solution 1 :

Mémoire insuffisante.

18 décembre 23:24:59 noyau ip-10-0-3-36 :[ 775.566936] Mémoire insuffisante :Tuer le processus 4973 (java) score 0 ou sacrifier l'enfant

À partir du même journal (ps);

[ 775.561798] [ 4973] 500 4973 4295425981 2435 71 50 0 Java

4295425.981 est d'environ 4 To. et la ligne total-vm:17181703924kB affiche environ 17 To.

Pouvez-vous déboguer votre routine d'allocation de mémoire ? quant à moi, votre application a une mauvaise boucle quelque part et doit prendre toutes les ressources disponibles, ainsi que le swap disponible.

Solution 2 :

Dec 18 23:24:59 ip-10-0-3-36 kernel: [  775.214705]  shmem_fallocate+0x32d/0x440
Dec 18 23:24:59 ip-10-0-3-36 kernel: [  775.217182]  vfs_fallocate+0x13f/0x260
Dec 18 23:24:59 ip-10-0-3-36 kernel: [  775.219525]  SyS_fallocate+0x43/0x80
Dec 18 23:24:59 ip-10-0-3-36 kernel: [  775.221657]  do_syscall_64+0x67/0x100

Votre processus de candidature tente d'invoquer fallocate sur le système de fichiers shmem. D'après une recherche rapide sur Google, il semble que ZGC utilise fallocate pour récupérer la mémoire de tas initiale du système de fichiers shm et continue à utiliser fallocate pour étendre le tas. Une telle utilisation de l'appel système fallocate est plutôt inhabituelle, donc soit il s'agit d'un bogue ZGC (comme vous l'avez déjà suspecté), soit quelque chose d'autre perd beaucoup de mémoire, ce qui entraîne l'échec de l'expansion du tas.

Je vous suggère de configurer ZGC pour éviter des allocations d'exécution supplémentaires (définissez Xms et Xmx à la même valeur). Cela ne résoudra peut-être pas votre problème, si la fuite de mémoire se produit à cause de quelque chose sans rapport, mais au moins vous auriez une meilleure chance de trouver le vrai coupable.

Notez que votre configuration globale est quelque peu dangereuse - ZGC aime apparemment avoir beaucoup de mémoire contiguë, mais si vous avez un tas de 190 Go sur une machine de 240 Go de RAM, il se peut qu'il n'y ait pas une région contiguë suffisamment grande pour fallocate de. Dans ce cas, ZGC se rabattra sur la récupération de petites régions de mémoire avec davantage de fallocate appels (voir la description du rapport de bogue lié), et le problème sera à nouveau obscurci... Activer la prise en charge des pages énormes dans JVM (pages énormes normales , pas des énormes pages transparentes !) et préallouez des pages énormes lors du démarrage (avec l'argument du noyau) - l'utilisation de pages énormes est de toute façon conseillée pour vos tailles de tas.


Linux
  1. Comment interpréter les informations Wireshark capturées

  2. Mesurer l'utilisation de RAM d'un programme ?

  3. Grep :Mémoire épuisée ?

  4. Le SSD est-il en train de mourir ? S'il vous plaît, aidez ! ?

  5. Limite de mémoire PHP

13 façons d'aider Linux

Qu'est-ce que la NVM (mémoire non volatile) ?

Comment effacer la mémoire d'échange sous Linux

Comment tester Oom-killer depuis la ligne de commande ?

Utilisation de la mémoire de la commande TOP

Comment lire les messages syslog oom-killer ?