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
12-13-2009, 03:08 PM
Šis pranešimas sukurtas norint padėti jums rasti problemas, kurių šalinimo būdus nelengva rasti, kadangi problemos atsiranda dėl serverio operacijų vykdymo sulėtinimo ar kai kurio konfigūracijos tipo. Čia kalbėsiu apie DNS cache problemas. Paslėptas pranešimo tikslas - sumažinti tokių pačių laiškų, kuriuos siunčiate į pagalbą, skaičių...

Sveiki,
Kasdien matau vs daugiau ir daugiau administratorių pranešimų, kuriuose jie aptarinėja savo serverių problemas ir aš pastebėjau, kad kai kurie iš jų pradėjo naudoti google DNS cache... savo serveriams. Ką? Vietoje lokalaus serverio DNS cache! Senojo gerojo 127.0.0.1!

Kai Windows, Linux ar Mac klientinis kompiuteris (su ekranu ir pele) naudojamas naršyti internete, tikrinti el. paštą ar pažiūrėti kelis filmukus youtube, tada taip, išorinis DNS cache (ISP/Google) naudojimas prasmingas, kadangi naršant internete atliekamos tik kelios DNS užklausos.

Kai kalbama apie serverius, jeigu naudosite išorinius DNS serverius su savuoju, geriausiu atveju „tik“ sulėtinsite savo serverį. Blogiausiu atveju, tam tikru metu, neužteks serverio našumo. Todėl, kad serveris nepajėgs įvykdyti visų užklausų, kurios jam pateikiamos (net jeigu tai dviejų procesorių, 24 GB RAM ir SSD diskų kompiuteris, kuris turėtų susitvarkyti! Bet ne! Kodėl???)

Kodėl???
--------
DNS verčia domenus į IP. Serveris atlieka šią operaciją kiekvieną kartą, kai gauna bet kurią užklausą. Kitaip sakant, serveris visą laiką atlieką DNS kešavimą, kad žinotų, ar IP, kuriam nusiųstas IP, turi reverse, koks yra tokio IP reversas...
Tai yra vienas pagrindinių serverio darbų, be kuri ojis negalėtų veikti. Turėti greitesnį serverį reiškia pagalvoti ir apie serverio atliekamas DNS užklausas. Tai visų pradedančių administratorių klaida: "mano serveris lėtas" "instaliavai vietinį DNS cache" "Eeee.. Ne". Ir jeigu DNS cache veikia lėtai, visas serveris veikia lėtai. Ši problema egzistuoja daugelyje mūsų klientų serverių ir pirmas pagalbos veiksmas yra išsiaiškinti, ar įdiegta DNS cache. Todėl, kad serverio lėtumas atsiranda iš DNS chache lėtumo...

Sprendimas
----------
Labai paprastas, greitas (12 sekundžių) ir lankstus: į serverį įdiegti DNS kešavimą. „Apt-get install bind9“ ir po 12 sekundžių serveris 3 kartus greitesnis! Mažiausiai!

Kodėl ne išorinis DNS cache?
----------------------------
Todėl, kad vietinio DNS kešo neturintis serveris atliks daugiau tokių pačių užklausų ir jos bus nuotolinės! Tinklo užlaikymai, išorinio serverio atsako laikas matematiškai daug lėtesnis už lokalaus DNS serverio (veikiančio 127.0.0.1) atsaką. Nekalbu apie pirmą užklausą, o apie jau sukešuotus duomenis. Iš esmės, DNS serveris atsakys per tokį pat laiką (labai greitai), tačiau fizinis nuotolis tarp jūsų serverio ir DNS serverio sulėtins užklausos apdorojimą. O tai sulėtins serverio darbą.

Įrodymai?
---------
1000 kartų paleidau domeno gavimą... Kreipiamasi į google.com

1) Gaunama iš google DNS cache
(8.8.8.8 / 8.8.8.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 sekundės 1000 kartų gauti google.com

2) Gavimas iš išorinių, tačiau tame pačiame tinkle esančių DNS serverių
(naudojamas OVH DNS 231.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 sekundės tai pačia operacijai
2,87 karto greičiau (arba 2,87 karto lėčiau)

3) Gavimas iš lokalaus DNS
(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 sekundės tai pačiai operacijai.
3,5 karto greičiau (arba 3,5 karto lėčiau)

Išvados
-------
Jeigu norite turėti lankstų ir našų serverį, kuris išnaudotų visus techninius resursus, įdiekite lokalų DNS chace. „apt-get install bind9“ ir laimėsite 3.5 karto našesnį serverį. Mažiausiai.

Jeigu turite darbo vietą (su ekranu ir pele), lankytojui ir jo jausmas tinklo uždelsimai neturėtų rūpėti, nes generuosite nedaug DNS užklausų. Tam puikiai tinka jūsų ISP ar Google DNS.

Bet tai tik pasiūlymas. Darykite taip, kaip jums geriau.

Pagarbiai
Octave