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
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.
ulimit
mostrará / establecerá un límite de recursos por proceso.