C'è un modo per far funzionare il killer OOM e impedire il congelamento di Linux? Ho eseguito applicazioni Java e C#, dove di solito viene utilizzata qualsiasi memoria allocata e (se le capisco bene) i overcommits stanno causando il blocco della macchina. Proprio ora, come soluzione temporanea, ho aggiunto,Qual è il modo migliore per evitare il blocco della memoria insufficiente (OOM) su Linux?
vm.overcommit_memory = 2
vm.overcommit_ratio = 10
a /etc/sysctl.conf.
Complimenti a tutti coloro che possono spiegare perché l'assassino OOM esistente non può funzionare correttamente in modo garantito, uccidendo i processi ogni volta che il kernel esaurisce la memoria "reale".
EDIT - molte risposte sono sulla falsariga di quelle di Michael "se si verificano problemi relativi a OOM killer, allora probabilmente è necessario correggere qualsiasi cosa causi l'esaurimento della memoria". Non penso che questa sia la soluzione corretta. Ci saranno sempre app con bug e mi piacerebbe regolare il kernel in modo che il mio intero sistema non si blocchi. Date le mie attuali conoscenze tecniche, questo non sembra debba essere impossibile.
Per limitare la memoria, perché non limitare l'overcommit alla parità? – wallyk
Il killer di OOM sui miei sistemi Linux sembra funzionare come progettato. Sei sicuro che stai vivendo un guasto a OOM killer? Perché pensi che sia la causa? Hai considerato anche la possibilità di problemi con i raccoglitori? – dmckee
@dmckee - tutte le altre applicazioni si bloccano. @wallyk: cosa "limita l'overcommit alla parità"? – gatoatigrado