Descriptores de archivos máximos de Debian

Descriptores de archivos máximos de Debian

Debian Lenny. Para cada usuario, incluido el root:

# cat /proc/sys/fs/file-max
262144

# sysctl fs.file-max
fs.file-max = 262144

# ulimit -Hn
1024

# ulimit -Sn
1024

El archivo /etc/security/limits.confno tiene líneas sin comentar.

¿De dónde saca ese 1024?

Respuesta1

Elfs.file-maxsistemamuestra cuántos identificadores de archivos se pueden asignartodo el sistema, mientras que ulimitlos límites de recursos son por proceso (o por UID). El primero se describe enDocumentation/sysctl/fs.txt:90:

archivo-max y archivo-nr:

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

El límite de 1024 archivos no está establecido explícitamente en ninguna parte; está codificado en el kernel como valor predeterminado para pid 1, eninclude/asm-generic/resource.h:81:

/*
 * valores predeterminados de rlimit de tiempo de arranque para la tarea de inicio:
 */
#definir INIT_RLIMITS \
{\
        ...
        [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \
        ...
}

qué referencias INR_OPEN_CURy INR_OPEN_MAXdeinclude/linux/fs.h:26:

#define INR_OPEN_CUR 1024 /* Configuración inicial para nfile rlimits */
#define INR_OPEN_MAX 4096 /* Límite estricto para rlimits de nfile */

Otros procesos simplemente heredan el límite init(o lo que sea pid 1).

¿Por qué /proc/1/limitsen Debian informa 1024 como ambos blandos?y duro¿Límite de archivos? No lo sé: ni las fuentes de sysvinit ni los parches del kernel de Debian lo cambian. Podrían ser los scripts initramfs, tal vez. (Ejecuto Arch, que tiene el valor predeterminado 1024/4096).

Respuesta2

Para la pregunta que planteó @grawity, esta confirmación del kernel puede explicar:

confirmar 0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641
Autor: Tim Gardner
Fecha: martes 24 de mayo 17:13:05 2011 -0700

    ulimit: aumenta el ulimit predeterminado en el número de archivos a 4096

Al menos en RHEL5.4 es 1024/1024 y en RHEL6.2 es 1024/4096.

información relacionada