GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo funcionan los límites del descriptor de archivos de Linux?

Quiere ver /proc/sys/fs/file-max en su lugar

De reciente linux/Documentation/sysctl/fs.txt:

archivo-máx y archivo-nr:

El núcleo asigna identificadores de archivos de forma dinámica, pero aún no los libera de nuevo.

El valor en file-max denota el número máximo de identificadores de archivo que asignará el kernel de Linux. Cuando recibe muchos mensajes de error sobre quedarse sin identificadores de archivos, es posible que desee aumentar este límite.

Históricamente, los tres valores en file-nr denotaban el número de identificadores de archivos asignados, el número de identificadores de archivos asignados pero no utilizados y el número máximo de identificadores de archivos. Linux 2.6 siempre informa 0 como el número de identificadores de archivos libres; esto no es un error, simplemente significa que el número de identificadores de archivos asignados coincide exactamente con el número de identificadores de archivos usados.

Los intentos de asignar más descriptores de archivos que el máximo de archivos se informan con printk, busque "VFS:límite máximo de archivos alcanzado".

EDITAR:el error subyacente probablemente no sea que el sistema se esté quedando sin descriptores de archivo globales, sino solo su proceso. Parece probable que el problema sea el límite de tamaño máximo de selección.


No parece que esté alcanzando el límite del descriptor de archivos del sistema. Ver esta respuesta.

Quizás su proceso de servidor usa select y por lo tanto se limita a 1024 descriptores? Si cambia a otro mecanismo, p. poll ya no estará limitado a 1024 descriptores.

select() funciona con fd_set s

Esto es de la documentación POSIX de select.h:

Lo siguiente se definirá como una macro:

FD_SETSIZE

Maximum number of file descriptors in an fd_set structure.

Intenta encontrar o generar FD_SETSIZE en su sistema.

Si encuentra que FD_SETSIZE es demasiado bajo para usted, preferiría alejarme de select que tratar de aumentar FD_SETSIZE que suele ser más difícil.


Linux
  1. Cómo administrar las capacidades de archivos de Linux

  2. Cómo encontrar un archivo en Linux

  3. Cómo crear un intercambio en Linux

  4. Cómo vaciar un archivo de registro en Linux

  5. ¿Cómo cambiar el nombre de un archivo en Linux?

Cómo vincular un archivo en Linux

Cómo cambiar el límite de archivos abiertos en Linux

Cómo trabajar con enlaces duros y suaves en Linux

Cómo cifrar archivos en Linux

Cómo deshabilitar el intercambio en Linux

¿Cómo usar gzip en Linux?