Limite de tamanho de / etc / hosts (Linux)


11

Alguém sabe qual é o limite de tamanho teórico de / etc / hosts em um sistema Linux antes que você comece a ver degradação no desempenho?

Além disso, alguém pode me indicar uma fonte oficial que declare qual é o limite esperado?


8
Isso me faz pensar que você está fazendo algo louco ou MUITO FORA das melhores práticas. Quais são os detalhes?
ewwhite

3
Parece que implantar um resolvedor de DNS leve pode ser uma solução melhor aqui.
Zoredache

1
Eu tenho um cliente que está solicitando isso. Eu esperava encontrar alguma documentação que pudesse mostrar a eles por que isso causaria problemas; em vez de tentar em uma máquina de teste e demonstrá-lo.
25816 MikeP90

1
O arquivo hosts é uma relíquia dos dias anteriores ao DNS dos anos 1970 e início dos anos 1980. Ter centenas de entradas em um arquivo de hosts foi reconhecido como uma péssima idéia desde muito tempo . Se você possui mais de 10 entradas na sua, provavelmente está no caminho errado.
Michael Hampton

Respostas:


9

Use a fonte , Mike.

O resolvedor usa uma pesquisa linear através do arquivo de texto para localizar entradas. É um banco de dados sem índices. Portanto, na ausência de capacidade de armazenamento em cache adicional, o custo para pesquisas será O (n). Quanto a quando isso resultará em uma degradação no desempenho, é uma pergunta impossível de responder - fica mais lenta a cada registro.

Se você conversar com um programador ou administrador de banco de dados, obterá números diferentes para o ponto em que uma pesquisa de índice (O (log2 (n)) é mais barata que uma varredura completa de tabela, mas geralmente a resposta estará na região de 20 para 100 registros.

Qualquer sistema Linux que precise resolver muitos nomes (não apenas nomes de host). Deve estar executando o nscd ou similar. A maioria desses caches indexará os próprios dados que anulariam a questão de desempenho, no entanto ...

Ele não fornece meios para gerenciar conjuntos de dados complexos / grandes - se você tiver um host com mais de um endereço IP, as pesquisas por meio do arquivo hosts sempre retornarão a primeira entrada.


1
Para fechar o loop, adicionamos 1,7 milhão de registros ao arquivo hosts e estimamos que ele adicionou 0,5 segundos a cada pesquisa. Nesse ambiente, 0,5 segundos é insignificante. Eu acho que um servidor DNS ainda é uma solução melhor, mas o cliente quer o que ele quer.
MikeP90


3

Tecnicamente, não há limite superior. No entanto, todas as pesquisas de DNS atingirão esse arquivo. Por que se deixar abrir para isso?

Pelo que vale, o maior /etc/hostsarquivo que distribuí em meus ambientes foi de 1.200 linhas. E isso funcionou bem para o aplicativo que eu estava gerenciando. O DNS não era uma opção nesse ambiente específico.


Vamos colocar de outra maneira. Se não houver indexação no kernel, cada ocorrência faria uma pesquisa linear que dependerá do tamanho do cache até o momento.
Deer Hunter

4
Eu uso um arquivo de hosts populares encontrado na internet, existem 15.430 linhas e não percebo nenhuma degradação real no desempenho da navegação na web.
25416 Bert

@DeerHunter Acho que não há nada no kernel do Unix que execute a pesquisa de nome de host.
Barmar

+1 na nota de Bert. Acabei de usar um arquivo personalizado com 22.000 linhas e isso não afetou o desempenho. Isso é útil para fins de teste!
21717 Josh Koenig
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.