¿Hay alguna manera de establecer el valor de ajuste del asesino OOM justo cuando se inicia un proceso daemon (Apache en mi caso)? Me gustaría dar a los procesos de Apache una mayor probabilidad de ser eliminados y hacer que sea virtualmente imposible que el asesino de OOM elimine algunos servicios más vitales.
Respuesta aceptada:
Creo que lo mejor sería agregar un script separado como parte de su init.d. En él, querrás hacer algo como esto
echo 15 > /proc/`pidof APP_NAME`/oom_adj
El pidof APP_NAME
recuperará el ID de proceso de la aplicación con ese nombre. Escribir 15 en /proc/{pid}/oom_adj aumenta la "maldad" del proceso {pid}, lo que aumenta las probabilidades de que el asesino OOM lo elimine.
El artículo Taming the OOM killer de LWN.net también sugiere algunas otras ideas que se sugirieron para permitir la especificación de un "oom_victim", pero no estoy seguro de que ninguna de ellas esté realmente en el kernel.
Por cierto:la mejor solución sería evitar tener que usar OOM Killer en primer lugar. Recuerde el lema no escrito de Micro$oft:No hay problema que más RAM no pueda solucionar.
[Nota:si pudiera haber más de uno de estos procesos, es posible que desee revisar un poco el código.]