We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

DNS cache: 127.0.0.1 vs Google


oles@ovh.net
13-12-09, 13:08
Esta mensagem tem como objectivo ajudar a evitar problemas para os quais as soluções
não são evidentes, pois os problemas são de abrandamento e lentidão no funcionamento
do servidor... e acontecem em certo tipo de configurações... Gostaria de vos falar do
caso dos servidores "DNS cache". O objectivo escondido: diminuir o número de emails
que são enviados ao suporte pelo mesmo tipo de problemas ...

Olá,
Desde há alguns tempos, vejo cada vez mais "posts" de administradores de servidores
que falam dos seus problemas do quotidiano e onde nota com surpresa que alguns desses
administradores começam a recorrer aos servidores DNS cache da google para o ...
seu servidor. Hein ? Ao invés de usar um servidor DNS cache local ! O bom velho
127.0.0.1 !

A partir do momento em que temos um terminal (com um ecrã e um rato) a correr Windows,
Linux ou Mac e o utilizamos para aceder à Web, aos emails ou ver alguns vídeos no
youtube, sim, a utilização do servidor DNS cache exterior (do ISP/Google) tem sentido,
pois são feitas poucas pesquisas/pedidos DNS quando se consulta a Web.

No caso de um servidor, já deve ser diferente; se utiliza um servidor DNS exterior ao
seu servidor, no melhor dos casos vai apenas "abrandar" um pouco a prestação do seu
servidor. No pior dos casos irá ter falhas devidas à falta de performance. O servidor
não saberá tratar o número de pedidos que são submetidos aos seus trabalhos (mas é
um bi-cpu, com 24GB de RAM e discos SSD, ele deve saber tratar todos os pedidos !
ai não ? Mas porquê ??? )

Porquê ?
----------
O DNS permite "traduzir" os nomes de domínios em endereços IP. Um servidor executa
este tipo de operação a cada pedido que lhe chega e para todo o tipo de pesquisa.
Isto quer dizer que um servidor faz a todo o tempo "DNS cache" para saber o IP que
comunicou com ele tem um "reverse", qual é o reverse então ...
É uma operação basilar de um servidor, sem a qual não poderia executar a maioria
das tarefas que é suposto serem executadas. Ter um servidor rápido é pensar também
nas pesquisas DNS que ele deverá fazer. É o erro básico do administrador iniciante
: "o meu servidor está lento !"
- "configuraste a DNS cache localmente ?"
"humm ... não".

E assim, se o DNS cache é lento, todo o servidor estará lento. Muitos dos servidores
dos nossos clientes têm este problema e a primeira coisa a ser feita na lista de
verificações é ver como está configurada a DNS cache. A lentidão de um servidor
é originada pela lentidão do servidor DNS ...

A solução
-----------
Muito simples, rápida (12 segundos) e fiável : instalar um servidor DNS cache.
"apt-get install bind9" e 12 segundos mais tarde o seu servidor ficará 3 vezes
mais rápido ! no Mínimo !

E porque não um servidor DNS cache exterior ?
---------------------------------------------
Porque se o servidor não usar a cache local, vai efectuar várias vezes a mesma
pesquisa e à distância ! Por causa das latências de rede, as respostas de um servidor
DNS local são matematicamente mais rápidas que as vindas de um servidor remoto.
Não se trata da 1ª resolução efectuada, mas de consulta de cache de pedidos já
efectuados. Em suma, o servidor DNS vai responder com as mesmas latências (muito
baixas), mas a distância vai provocar abrandamentos. Que irão tornar lento todo
o servidor.

Provas ?
---------
Efectuo 1000 vezes a resolução de nomes de um nome de domínio ... allez google.com ...

1.) a resolução nos servidores DNS cache da google
(8.8.8.8 / 8.8.4.4)

# time (for i in `seq 1 1000`; do dig google.com @8.8.8.8 > /dev/null 2>>/dev/null; done)
real 0m22.914s
user 0m3.800s
sys 0m4.330s

23 segundos para resolver 1000 vezes google.com

2.) a resolução em servdiores DNS cache exteriores, mas dentro da mesma rede
(neste caso da Ovh 213.186.33.99)

# time (for i in `seq 1 1000`; do dig google.com @213.186.33.99 > /dev/null 2>>/dev/null; done)
real 0m8.051s
user 0m3.220s
sys 0m4.580s

8 segundos para a mesma operação,
ou seja, 2.87 vezes mais rápido (ou 2.87 vezes mais lento)

3.) a resolução no servidor DNS local
(127.0.0.1)

# time (for i in `seq 1 1000`; do dig google.com @127.0.0.1 > /dev/null 2>>/dev/null; done)
real 0m6.613s
user 0m3.160s
sys 0m4.340s

6.6 segundos para a mesma operação,
ou seja, 3.5 vezes mais rápido (ou 3.5 vezes mais lento)

Conclusão
-----------
Se deseja ter um servidor fiável e de grande performance, que consegue utilizar "a fundo"
os recursos HARD, instale um servidor DNS cache local. É só usar o "bind" na maioria dos
repositórios das vossas distribuições e ganham 3.5 vezes em performance global do servidor.
No mínimo.

Se têm apenas uma estação de trabalho (com um ecrã e um rato), a latência da rede não
tem muita importância para a experiência de navegação e as suas sensações, pois são efectuadas
poucas pesquisas DNS. Google ou DNS do seu ISP serve bem para o trabalho.

Mas é apenas um conselho. Façam como vos parecer mais apropriado .

Amigavelmente,
Octave