Hoy, mi servidor falló con Too many open files in system: pero ya tienen valores altos, ¿cuál es el valor máximo para esto?

Siento que no hay buenos resultados en Google para esto, explicando lo que debe tenerse en cuenta para configurar esos valores, solo dicen que lo configure como 100k.

Tengo un servidor RAM de 32 GB que usa solo 10 GB en este momento, supongo que aumentar los límites de archivo a valores muy altos aumentará el uso de RAM, ¿hay algún tipo de fórmula que pueda usar para calcular esto? Como para 8 GB de RAM, ¿Puede tener X número de archivos abiertos?

Configuración actual:

cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024 

Comentarios

  • No es una respuesta, pero me parece que limitar la cantidad máxima de archivos abiertos no es una forma de ahorrar RAM sino el rendimiento de E / S del disco. Permitir una gran cantidad de archivos abiertos implica permitir una (potencialmente) gran cantidad de accesos al disco. Además, es probable que tenga un límite general en todo el sistema, así como un límite por proceso. No soy un usuario de Linux, no puedo ' decir mucho más sobre eso, aparte de eso ulimit mostrará / establecerá un límite de recursos por proceso.
  • ¿Es esto incluso una preocupación para los discos SSD de todos modos? Es ' un servidor y no ' me importa si muere, la empresa de alojamiento simplemente lo reemplazará y tengo copias de seguridad. También leí que los sockets de red también pueden causar este problema, me preocupo principalmente por el rendimiento. Yo ' estoy pagando por el hardware ya sea si utilizo el 100% o el 5%, siempre que ' mejore el rendimiento, ¿por qué preocuparse? Para un servidor en la nube, podría ver esto como un problema, pero para el hardware dedicado no realmente
  • Sí, el número de sockets abiertos también contará para este límite (descriptores de archivos abiertos en general). Me olvide de eso. Entonces, si la RAM es su única preocupación, no ' creo que me preocuparía por aumentar el límite, a menos que eso signifique que cualquier servicio que proporcione comience a asignar memoria adicional relacionada con cada socket abierto. Esto sería algo que solo usted podría investigar.

Responder

Como dice Kusalananda, aumentando file-max no tendrá un impacto directo en el uso de la memoria, pero permitirá que los procesos abran más descriptores de archivos que tendrán un efecto dominó (tanto del seguimiento de las descripciones de archivos en el kernel como del aumento de memoria uso en los procesos usando esas descripciones y descriptores) – los comentarios del kernel sugieren aproximadamente un kilobyte por archivo para los datos del kernel, y reducirán el valor predeterminado de file-max (8192) si eso termina representa más del 10% de la memoria cuando el sistema arranca ( es decir, solo hay 80 MiB de RAM). El valor máximo impuesto por el kernel es el valor máximo que se puede almacenar en una variable de tipo long en C en su arquitectura.

Si aumenta file-max, también debería aumentar inode-max; la documentación del kernel dice que esto debería ser «3-4 veces mayor que el valor en file-max, ya que stdin, stdout y los sockets de red también necesitan una estructura de inodo para manejarlos ”.

Tenga en cuenta que al presionar file-max aparecerá un mensaje de registro del kernel que dice“ VFS: límite máximo de archivos n alcanzado ”, Con el valor apropiado para n . Si no tiene eso en sus registros, o no está presionando file-max, o está filtrando sus registros demasiado (es un mensaje de registro de nivel de información).

(file-max no limita los procesos con CAP_SYS_ADMIN, por lo que presionarlo no detendrá todo).

Comentarios

  • Entonces, ¿no hay inconveniente en tener números arbitrariamente altos? ¿No ' no veo inode-max en mi sistema en cualquier lugar? Ubuntu 16.04 aquí. Solo quiero evitar que mi servidor vuelva a fallar, ejecuto varios servicios web en este servidor y ' no me importa la utilización de recursos
  • La desventaja es que los procesos se desbocan no quedará atrapado por el límite general de descripciones de archivos, por lo que podrían causar la falta de recursos de otras maneras.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *