ovh - DNS cache : 127.0.0.1 vs Google

Ce message a pour le but de vous éviter de problèmes dont les solutions qui ne sont
pas évidentes à trouver car les problèmes sont dûs aux ralentissements de fonctionnement
du serveur et dans certains types de configurations seulement. Là je voudrais parler
du cas de serveurs DNS cache. Le but caché : diminuer le nombre de emails que vous
envoyez sur le support pour le même type de problèmes ...

Bonjour,
Depuis quelques jours, je voie de plus en plus de postes où les administrateurs
serveurs parlent de leur problèmes quotients et où je remarque avec la surprise
que certains d’entre-eux commencent à utiliser les serveurs DNS cache de google
pour ... le serveur. Hein ? Au lieu d’un serveur DNS cache local ! Le bon vieux
127.0.0.1 !

Lorsqu’on a un poste de travail (avec un écran et une souris) sous Windows, Linux
ou mac et on l’utilise pour consulter le WEB, les emails ou voir quelques vidéo sur
youtube, oui, l’utilisation d’un serveur DNS cache extérieur (du ISP/Google) a un sens
car vous faites peu de requêtes DNS quand vous consultez le WEB.

Par contre dans le cas d’un serveur, si vous utilisez un serveur DNS extérieur à
votre serveur, au mieux vous allez "juste" ralentir votre serveur. Dans le pire de
cas, vous allez avoir des pannes dû aux manques de performances de votre serveur.
Car le serveur ne saura pas traiter le nombre de requêtes qu’il doit traiter
(alors que c’est un bi-cpu, 24Go de RAM avec des SSD donc oui il doit savoir traiter
ça ! mais non ! mais pourquoi ??? )

Pourquoi ?


Le DNS permet de résoudre les noms de domaines en IP. Un serveur fait ce genre
d’opération à chaque requête qui arrive sur lui et pour tout genre de requête.
Ce qui veut dire qu’un serveur fait tout le temps du DNS cache pour savoir si
l’IP qui envoie l’IP a un reverse, quel est le reverse d’une IP ...
C’est une opération de base pour un serveur sans laquelle il ne sait pas faire
son travail. Avoir un serveur rapide c’est penser d’abord aux requêtes DNS qu’il
doit faire. C’est l’erreur de base d’un administrateur débutant "mon serveur
est lent" "tu as installé le DNS cache local ?" "euhhh ... non". Et donc si le
DNS cache est lent, tout le serveur est lent. Plein de serveurs que nos clients
ont ce problème et la 1ère opération sur le check du serveur consiste à savoir
où est le DNS cache. Car la lenteur du serveur vient de la lenteur du serveur
DNS cache ...

La solution


Très simple, rapide (12 secondes) et fiable : installer un serveur DNS cache
sur le serveur. "apt-get install bind9" et 12 secondes plus tard votre serveur
est 3 fois plus rapide ! Minimum !

Pourquoi pas un serveur DNS cache extérieur ?


Parce que le serveur, n’ayant pas de cache local, va effectuer plusieurs fois la
même requête DNS et à distance ! A cause de latences du réseau, les réponses d’un
serveur DNS extérieur vont être mathématiquement plus lentes que les réponses d’un
serveur DNS local (sur 127.0.0.1). On ne parle pas de la 1ère résolution mais de
la consultation du cache déjà résolu. En gros, le serveur DNS va répondre avec les
mêmes temps de réponse (très court), mais la distance entre votre serveur et le
serveur de DNS va provoquer des ralentissements. Qui vont ralentir tout le serveur.

Preuves ?


Je lance 1000 fois la résolution d’un nom de domaine ... allez google.com ...

1.) la résolution sur les serveurs DNS cache de 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 secondes pour résoudre 1000 fois google.com

2.) la résolution sur les serveurs DNS cache extérieur mais sur le réseau
(cas d’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 secondes pour la même opération,
soit 2.87 fois plus rapide (ou 2.87 fois plus lent)

3.) la résolution sur le serveur 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 secondes pour la même opération,
soit 3.5 fois plus rapide (ou 3.5 fois plus lent)

Conclusion


Si vous souhaitez d’avoir un serveur fiable et performant, qui sait utiliser toutes les
ressources HARD, installez un serveur DNS cache local. "apt-get install bind9" et vous
gagnez 3.5 fois en performance global du serveur. Minimum.

Si vous avez un poste de travail (avec un écran et une souris), la latence du réseau
n’a pas vraiment d’importance sur le visiteur et ses sensations, car vous faites peu
de requêtes DNS. Google ou DNS de votre ISP est très très bien pour ça.

Mais c’est juste un conseil. Faites comme le bon vous semble :)

Amicalement
Octave

Envie de recevoir nos dernières nouvelles? Inscrivez-vous à notre newsletter