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.