OOM Killer causado por E/S de disco durante la transferencia de archivos

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

Hola, soy Incompetente.
Han pasado unos días desde que monté un servidor casero barato en mi nueva casa. Un problema que me preocupaba desde hace tiempo ha vuelto a ocurrir, incluso con mucha memoria.

¿Qué pasó?

Mi entorno actual es un poco peculiar, la capacidad de memoria es de 16GB + 8GB, lo que es un poco irregular, pero por favor, comprendan que lo construí con piezas sobrantes.

Con esto, la RAM en sí es de 24GB, lo que quizás sea común hoy en día, pero personalmente lo considero bastante generoso, así que pensé que no ocurriría un OOM. Sin embargo, se produjo un OOM que parecía una reprimenda del kernel de Linux.

Las aplicaciones son solo apache, php-fpm, Redis y similares, y la memoria que cada una asigna es insignificante, pero...

Problemas con la transferencia de archivos

Ocurrió cuando intentaba traer archivos por scp desde el servidor casero que todavía tengo en casa de mis padres, o cuando estaba guardando imágenes en un HDD de 2TB de una sola vez con aria2c para almacenar una cierta cantidad.
Ahora bien, ¿por qué ocurre un OOM solo con este proceso de escritura? Esto se debe a que los archivos se reciben primero en la memoria y luego se escriben en el área de almacenamiento. Para acelerar el proceso, es necesario que la memoria los acepte primero como caché.

Parece que con scp -r y archivos de cientos de GB, especialmente si esos archivos implican operaciones de E/S aleatorias, realmente consume muchos recursos.
Además, esto no se considera uso de memoria por proceso, por lo que no se puede verificar con top ni con un solo proceso; es un asunto del kernel de Linux, lo que hace que sea bastante difícil de identificar.

En pocas palabras, parece que esto sucede porque la cantidad de datos almacenados temporalmente en la memoria debido a la espera de E/S no puede seguir el ritmo de la escritura, lo que lleva a una situación precaria.

Parámetros del kernel que se pueden modificar

Como algo que el kernel puede hacer, parece que se puede configurar cuánto se almacena en caché, etc. Lo intenté ajustar, pero no sentí mucho efecto.
2.2. Opciones de ajuste de VFS: Investigación y experimentación Documentación del producto Red Hat
Notas sobre la optimización de E/S de escritura modificando la configuración de la caché de páginas de Linux - YOMON8.NET

En cuanto al fenómeno, es similar a lo que le pasó a esta persona.
OOM Killer invoked due to slow disk I/O - #17 by Whis-key - troubleshooting - Storj Community Forum (official)
Hacía tiempo que no veía la palabra Storj... aunque mi espacio gratuito fue eliminado sin previo aviso...

Quién iba a decir que me preocuparía la escasez de memoria solo por escribir en el HDD...
Es la parte donde a menudo se dice que, en cuanto a la memoria, "Linux es optimista con la RAM, Windows es pesimista". Aunque entiendo la intención de utilizar la memoria al máximo para un rendimiento más eficiente, me gustaría encontrar una manera de lidiar con este problema que ocurre debido a la espera de E/S.

Related Posts