Debian Lenny. Para cada usuário, incluindo root:
# cat /proc/sys/fs/file-max
262144
# sysctl fs.file-max
fs.file-max = 262144
# ulimit -Hn
1024
# ulimit -Sn
1024
O arquivo /etc/security/limits.conf
não possui linhas não comentadas.
De onde vem esse 1024?
Responder1
Ofs.file-max
sysctlmostra quantos identificadores de arquivo podem ser alocadosNo âmbito do sistema, enquanto ulimit
os limites de recursos são por processo (ou por UID). O primeiro é descrito emDocumentation/sysctl/fs.txt:90
:
arquivo-max e arquivo-nr: O valor em file-max denota o número máximo de arquivos identificadores que o kernel do Linux irá alocar. Quando você ganha muito de mensagens de erro sobre a falta de identificadores de arquivo, você pode deseja aumentar esse limite.
O rlimit de 1024 arquivos não está explicitamente definido em nenhum lugar; está codificado no kernel como o valor padrão para pid 1, eminclude/asm-generic/resource.h:81
:
/* * padrões de limite de tempo de inicialização para a tarefa init: */ #define INIT_RLIMOTS \ { \ ... [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \ ... }
quais referências INR_OPEN_CUR
e INR_OPEN_MAX
deinclude/linux/fs.h:26
:
#define INR_OPEN_CUR 1024 /* Configuração inicial para nfile rlimits */ #define INR_OPEN_MAX 4096 /* Limite rígido para nfile rlimits */
Outros processos simplesmente herdam o limite de init
(ou o que quer que seja pid 1).
Por que /proc/1/limits
no Debian reporta 1024 como softe difícillimite de arquivo? Não sei: nem as fontes do sysvinit nem os patches do kernel do Debian mudam isso. Podem ser os scripts initramfs, talvez. (Eu executo o Arch, que tem o padrão 1024/4096.)
Responder2
Para a questão levantada pelo @grawity, este commit do kernel pode explicar:
confirmar 0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641 Autor: Tim Gardner Data: Terça-feira, 24 de maio 17:13:05 2011 -0700 ulimit: aumenta o ulimit padrão no número de arquivos para 4096
Alugado no RHEL5.4 é 1024/1024 e no RHEL6.2 é 1024/4096.