DNS benchmark

Belelendültem a teljesítmény-tesztelésbe. Mivel nem találtam komolyabb összehasonlító táblázatot és konkrét benchmark programot sem authoritativ DNS-szerverekre, így az OpenBenchPack projekt keretében készítettem pár python programot erre a feladatra. Továbbá, ha már így alakult mérést is készítettem velük a Debian Sid terjesztésben elérhető összes DNS szerverrel és különféle backendekkel.

Környezet

A DNS-szervereket egy XEN virtuális gépben futtattam, ami 256M memóriával rendelkezett és a tesztek ideje alatt az egyetlen virtuális domain volt a dom0 mellett a host rendszeren. A hoszt rendszer maga egy egy processzoros Intel Pentium 4 3.00GHz volt 512Mb RAM-al, Intel 82801EB (ICH5) Serial ATA 150 vezérlővel. A mérések során kétféle klienst használtam. Az egyikükkel (AMD Athlon XP 2400+, 512Mb RAM) a relatív sebesség teszteket, másikukkal (Dell PowerEdge 2650, Dual Intel Xeon CPU 2.00GHz, 1GB RAM) pedig a terhelés teszteket végeztem. Mindkét kliens a szerverrel 100 Mb/s-os switchelt hálózaton keresztül csatlakozott.

Metodika

Minden DNS-szervet közel alapértelmezett konfigurációval használtam (részletek tekintetében lásd az eredmények alatti megjegyést). Nyilvánvalóan ezzel egy lehetséges hibafaktort, az alapértelmezett beállítások jóságát, tudatosan belevittem a tesztbe. Ennek legfőbb oka, hogy jómagam nem értek egyenrangúan mindegyik DNS-szerverhez és a mögötte álló adatbázisokhoz. Természetesen éles rendszereken számtalan paraméter van amit hangolni lehet és kell.

A tesztek ideje alatt a DNS-szerver illetve egyes esetekben az adatbázis szerverek mellett csak az ssh hálózati szolgáltatás futott, a cron és az at is le lett állítva. Mindegyik kombinációban a DNS-szerverek adatbázisát 1000 zónával, minden zónában 254 db A rekorddal töltöttem fel. Az egy klienses relatív teljesítmény tesztek esetén a kliens minden zónából véletlenszerűen választott 100 A rekord lekérdezést végzett. Összesen tehát 100.000 lekérdezést kapott a DNS-szerver az első számú kliens géptől. A második tesztben a ugyanezt a lekérdezés sorozatot 20 párhuzamos kliens végezte el a második számú kliens gépről. Közben top és ps parancsokkal mértem a CPU és virtuális memória felhasználást.

Minden tesztfuttatást ötször ismételtem az eredmények az öt futtatás átlagát mutatják. Nagy szórást nem tapasztaltam ez eredményekben a futások között.

Megítélésem szerint az eredmények elsősorban kis, közepes DNS-szerverek esetén tekinthetők relevánsnak.

Eredmények

DNS server relatív sebesség virtuális memória felhaszálás cpu felhaszálás
BIND 9.3.2 100 % 58 M 12 %
BIND + OpenLDAP (2.3.24) backend 40 % 34 M (139 M LDAP) 45 % (55% LDAP)
PowerDNS 2.9.20 + BIND zone file backend 136 % 98 M 5 %
PowerDNS + LDAP backend 64.5 % 74 M (91 M LDAP) 24 % (12 % LDAP)
PowerDNS + MySQL (5.0.22) backend 64.5 % 76 M (117 M MySQL) 15 % (15 % MySQL)
LDAPDNS 2.06 36.7 % na. na.
MaraDNS 1.2.07.5 134 % 124 M 3.5 %
tinydns (djbdns) 1.05 87.7 % 1.7 M 24 %
nsd 2.3.3 129 % 31 M 2 %


Megjegyzések az eredményekhez:

  • az LDAPDNS összeomlott a terheléstől ezért nincs adat arról,
  • A relatív sebesség az egyklienses tesztek futásidejének összehasonlításából származtatott érték; a referenciaként használt file-backendes BINDhoz és az éppen vizsgált szerver-backend-kombinációhoz tartozó teszt futásidejének hányadosa. A 200%-os érték azt jelenti, hogy az adott szerver-backend-kombináció pontosan feleannyi idő alatt teljesítette a tesztet, mint a referenciaként használt BIND. A 20 klienses teszek futásidejei is a fenti arányokat eredményezték.
  • LDAP esetén az indexelés be volt kapcsolva, de egyéb tuning nem volt
  • tinydns alapértelmezésben minden kérést állományba loggol ez ki lett kapcsolva, mivel más szerverek ezt nem teszik alapértelmezésben
  • a tesztekkel nem volt célom az abszolút maximális kiszolgálási teljesítmény mérése, de elmondható, hogy a tesztek alatt a szerverek 2000-2500 kérés per másodperc terhelésnek voltak kitéve.
  • a meréseket tovább lehetne finomítani; megvizsgálható például CPU és memória használat az egyes paraméterek (zonák száma, lekérdezések száma stb.) függvényében.
Szalai Ferenc | 2006, június 23 - 18:12 |
Mohacsi (nem ellenőrzött), 2006, június 27 - 10:14

Erdemes volna megmerni a BIND 8.4.7-et. Allitolag memoriabol kevesebbet eszik. Ezert hasznaljak meg mindig a ROOT nevszerevereknel.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.