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.
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.
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
5
Um pouco da história da Internet - antes da implantação do DNS em 1984, o arquivo de hosts era o único a resolver nomes e não havia muitos hosts na rede - 325 em fevereiro de 1983 (RFC 847) . Existem cópias de HOSTS.TXT (embora não sejam legíveis por máquinas) de 1982 no arquivo da maillist do histórico da Internet . Havia até um HOSTS.TXT alternativo (de Geoff Goodfellow) .
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!
Respostas:
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.
fonte
Um pouco da história da Internet - antes da implantação do DNS em 1984, o arquivo de hosts era o único a resolver nomes e não havia muitos hosts na rede - 325 em fevereiro de 1983 (RFC 847) . Existem cópias de HOSTS.TXT (embora não sejam legíveis por máquinas) de 1982 no arquivo da maillist do histórico da Internet . Havia até um HOSTS.TXT alternativo (de Geoff Goodfellow) .
fonte
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/hosts
arquivo 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.fonte