Existe um limite (técnico ou prático) para o tamanho em que você pode configurar o número máximo de arquivos abertos no Linux? Existem alguns efeitos adversos se você configurá-lo para um número muito grande (por exemplo, 1-100M)?
Estou pensando em uso do servidor aqui, não em sistemas embarcados. É claro que programas que usam grandes quantidades de arquivos abertos podem consumir memória e ficar lentos, mas estou interessado em efeitos adversos se o limite for configurado muito maior que o necessário (por exemplo, memória consumida apenas pela configuração).
linux
files
limit
open-files
Sampo
fonte
fonte
Respostas:
Suspeito que o principal motivo do limite seja evitar o consumo excessivo de memória (cada descritor de arquivo aberto usa memória do kernel). Ele também serve como uma proteção contra aplicativos de bugs vazando descritores de arquivos e consumindo recursos do sistema.
Mas, considerando a quantidade absurda de sistemas modernos de RAM em comparação com os sistemas há 10 anos, acho que os padrões hoje são bastante baixos.
Em 2011, o limite rígido padrão para descritores de arquivos no Linux aumentou de 1024 para 4096 .
Alguns softwares (por exemplo, MongoDB) usam muito mais descritores de arquivo que o limite padrão. O pessoal do MongoDB recomenda aumentar esse limite para 64.000 . Eu usei um
rlimit_nofile
de 300.000 para determinadas aplicações.Desde que você mantenha o limite flexível no padrão (1024), provavelmente é bastante seguro aumentar o limite rígido. Os programas precisam chamar
setrlimit()
para aumentar seu limite acima do limite flexível e ainda são limitados pelo limite rígido.Veja também algumas perguntas relacionadas:
fonte
O impacto normalmente não seria observável, mas o módulo de E / S do kernel precisará cuidar de todos esses descritores de arquivos abertos e também poderá ter um impacto na eficiência do cache.
Esses limites têm a vantagem de proteger o usuário de seus próprios erros (ou de terceiros). Por exemplo, se você executar um pequeno programa ou script que se bifurca por tempo indeterminado, ele eventualmente será bloqueado em um dos se
ulimit
evitará um congelamento mais intenso (possivelmente irrecuperável) do computador.A menos que você tenha razões precisas para aumentar qualquer um desses limites, evite-o e durma melhor.
fonte
É tecnicamente limitado ao valor máximo de tempo sem assinatura (C Lang), ou seja, 4.294.967.295
Referência:
fs.h
filefonte
Acho que sua preocupação é compreensível, mas provavelmente o Linux não consumirá muita memória para os descritores de arquivos configurados (mas não usados) :)
Não me lembro de um problema assim na minha carreira profissional nos últimos 10 anos.
Saudações.
fonte
Tarde demais, mas isso deve ajudar todos os outros a obter a resposta para esta pergunta. O limite prático para o número de arquivos abertos no linux também pode ser contado usando o número máximo de descritores de arquivos que um processo pode abrir.
Vi limites sendo alterados de sistema para sistema. Na página do manual getlimit , você pode ver que
RLIMIT_NOFILE-1
especifica os limites internamente.Para verificar o valor RLIMIT_NOFILE, você pode usar a instrução abaixo para obter uma tupla
python -c "import resource; print(resource.getrlimit(resource.RLIMIT_NOFILE))"
A tupla retorna resultados como (Soflimit, hardlimit). Para mim, rodando em vários sistemas, os resultados são como abaixo
Nota: 9223372036854775807 esse número significa simplesmente infinito. Você sempre alcançará outros limites de recursos antes de atingir isso. Se você modificar o limite máximo de um sistema além do que é, terá que modificar os parâmetros do kernel.
fonte