¿Hay alguna manera de hacer que OOM Killer funcione y evitar que se congele Linux? He estado ejecutando aplicaciones Java y C#, donde normalmente se utiliza cualquier memoria asignada, y (si las entiendo bien) los sobrecompromisos hacen que la máquina se congele. En este momento, como una solución temporal, agregué,¿Cuál es la mejor forma de evitar la falta de memoria (OOM) en Linux?
vm.overcommit_memory = 2
vm.overcommit_ratio = 10
a /etc/sysctl.conf.
Felicita a cualquiera que pueda explicar por qué el asesino OOM existente no puede funcionar correctamente de forma garantizada, matando procesos cada vez que el kernel se quede sin memoria "real".
EDIT - muchas respuestas son similares a las de Michael: "si experimentas problemas relacionados con OOM killer, entonces probablemente necesites arreglar lo que esté causando que te quedes sin memoria". No creo que esta sea la solución correcta. Siempre habrá aplicaciones con errores, y me gustaría ajustar el kernel para que todo mi sistema no se congele. Dado mi entendimiento técnico actual, esto no parece que debería ser imposible.
Para limitar la memoria, ¿por qué no limitaría el exceso de compromiso a la paridad? – wallyk
El asesino OOM en mis sistemas Linux parece funcionar como está diseñado. ¿Qué tan seguro está de que está experimentando una falla OOM killer? ¿Por qué crees que esa es la causa? ¿Has considerado la posibilidad de un problema con el recolector de basura también? – dmckee
@dmckee - todas las demás aplicaciones se congelan. @wallyk - ¿Qué es "limitar el exceso de compromiso con la paridad"? – gatoatigrado