43 votes

Éviter le démontage des applications hors mémoire sous linux

Je constate qu'à l'occasion, ma boîte Linux manque de mémoire et commence à détruire des processus aléatoires pour y faire face.

Je suis curieux de savoir ce que les administrateurs font pour éviter cela ? La seule vraie solution est-elle d'augmenter la quantité de mémoire (est-ce que le fait d'augmenter le swap seul va aider ?), ou y a-t-il de meilleures façons de configurer la boîte avec des logiciels pour éviter cela ? (par exemple, des quotas ou autre ?).

1voto

Malgré de nombreuses réponses ici - le mieux que vous puissiez faire en tant qu'administrateur est d'examiner tout ce qui se trouve dans le(s) rapport(s) du tueur d'oom et de comprendre clairement pourquoi il se déclenche. Cela devrait vous donner un indice sur les prochaines étapes. Cela peut être lié à la configuration du système d'exploitation ou à un problème avec un logiciel particulier.

0voto

J'ai eu un problème similaire lié à ce problème et la solution était d'utiliser un noyau plus ancien / plus récent (corrigé).

Cependant, à l'époque, je ne pouvais pas redémarrer ma machine et j'ai dû me connecter en tant que root et vider les caches du système avec cette commande :

echo 3 > /proc/sys/vm/drop_caches

-6voto

c4f4t0r Points 5014

@voretaq7 linux n'a pas de concept de gestion de la mémoire détraqué, par défaut vm.overcommit_ratio est 0,

0       -   Heuristic overcommit handling. Obvious overcommits of
            address space are refused. Used for a typical system. It
            ensures a seriously wild allocation fails while allowing
            overcommit to reduce swap usage.  root is allowed to
            allocate slightly more memory in this mode. This is the
            default.

Ainsi, si vous disposez de 4 Go de mémoire vive et que vous essayez d'allouer 4,2 Go de mémoire virtuelle avec malloc, votre allocation échouera.

Avec vm.overcommit_ratio = 1

            1    -   Always overcommit. Appropriate for some scientific
            applications. Classic example is code using sparse arrays
            and just relying on the virtual memory consisting almost
            entirely of zero pages.

Avec vm.overcommit_ratio = 2

           2    -   Don't overcommit. The total address space commit
            for the system is not permitted to exceed swap + a
            configurable percentage (default is 50) of physical RAM.
            Depending on the percentage you use, in most situations
            this means a process will not be killed while accessing
            pages but will receive errors on memory allocation as
            appropriate.

            Useful for applications that want to guarantee their
            memory allocations will be available in the future
            without having to initialize every page.

Donc, par défaut, Linux ne surcharge pas, si votre application utilise plus de mémoire que vous n'en avez, votre code est peut-être défectueux.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X