Recientemente tuve la necesidad de realizar algún estudio sobre el funcionamiento de dos servidores DNS los cuales soy responsable por su administración. Mis dudas
eran relacionadas al performance de los servidores.
En el mundo de los DNS el performance se mide de dos maneras:
* Throughput (numero de queries por segundo que el DNS Server es capaz de manejar)
* Latencia (tiempo de resolución de los queries)
En base a lo anterior uno mismo puede contruir unos scripts y apoyandonos en el comando DIG obtener gran información. Sin embargo durante mi investigación y
a través de una lista conseguí dos herramientas que pueden realizar un excelente estudio: dnsperf y resperf (http://www.nominum.com/services/measurement_tools.php)
OBJETIVO
Realizar y evaluar el performance de un DNS Server
SOFTWARE NECESARIO:
En mi caso hice todas las pruebas sobre un DNS Server en mandriva las herramientas sobre mandriva.
Software adicional: dnsperf y resperf. Se puede conseguir: http://www.nominum.com/services/measurement_tools.php
GNUplot
INSTALACION
wget ftp://ftp.nominum.com/pub/nominum/dnsperf/1.0.1.0/dnsperf-1.0.1.0-1-rhel-5-i386.tar.gz
tar -zxvf dnsperf-1.0.1.0-1-rhel-5-i386.tar.gz
cd dnsperf-1.0.1.0-1
rpm -ivh dnsperf-1.0.1.0-1.i386.rpm
urpmi gnuplot (MUY RECOMENDADO para generar unas gráficas más adelantes)
Los archivos binarios quedaran instalados en:
/usr/local/nom/bin
DOCUMENTACION:
Luego de la instalación del paquete existe una excelente documentación en formato pdf ubicada en:
/usr/local/nom/doc/dnsperf
FUNCIONAMIENTO:
En fin, basicamente lo que ambos programas hacen es tomar una enorme lista (un archivo de texto) donde existen miles de dominios separados por el tipo de query (A, AAAA, PTR, TXT, etc), lo envia a un servidor DNS (indicado por linea de comando) y luego empieza a recabar información para finalmente ofrecer un resumen de los resultados.
El archivo de texto puede ser editado, cambiado, modificado, etc por uno mismo sin inconveniente (archivo original: queryfile-example-100thousand).
EJEMPLOS:
Vamos a nombrar dos diferentes comandos con los cuales podemos hacer una evaluación. Recomiendo ampliamente leer la documentación oficial antes de proseguir. Estas herramientas consumen alto procesamiento de CPU, consumo de memoria y ancho de banda. Es muy sencillo saturar un servidor y dejarlo fuera de linea con estas herramientas. Adicionalmente hay que tener mucho cuidado con diversos firewalls que pueden encontrarse
en el medio entre el DNS Server y el cliente que ejecuta la aplicación.
Aquí van los ejemplos:
Comando 1: resperf
- Ejemplo 1-1:
./resperf -s 127.0.0.1 -d queryfile-example-100thousand.orig -m 100
Ejemplo de la salida:
DNS Resolution Performance Testing Tool
Nominum Version 1.0.1.0
[Status] Sending
[Status] Waiting for more responses
^C
[root@localhost bin]# ./resperf -s 127.0.0.1 -d queryfile-example-100thousand -m 100
DNS Resolution Performance Testing Tool
Nominum Version 1.0.1.0
[Status] Sending
[Status] Waiting for more responses
[Status] Testing complete
Statistics:
Queries sent: 2999
Queries completed: 2985
Queries lost: 14
Ran for: 100.000002 seconds
Maximum throughput: 98.000000 qps
Lost at that point: 2.00%
- Ejemplo 1-2:
./resperf-report -s 127.0.0.1 -d queryfile-example-100thousand.orig -m 10
Ejemplo de la página Web:
- Ejemplo 1-3:
./resperf-report -s 127.0.0.1 -d queryfile-example-100thousand.orig
Comando 2: dnsperf
Ejemplo 2-1:
Ejecutar 3 queries maximos al servidor localhost con un histograma de 20 por 10 segundos:
./dnsperf -d ../examples/dnsperf/queryfile-example-100thousand -q 3 -H 20 -l 10 -s 127.0.0.1
Salida del comando anterior:
[root@localhost bin]# ./dnsperf -d queryfile-example-100thousand -q 10 -H20 -l 10
DNS Performance Testing Tool
Nominum Version 1.0.1.0
[Status] Processing input data
[Status] Sending queries (to 127.0.0.1)
[Status] Testing complete
Statistics:
Parse input file: multiple times
Run time limit: 10 seconds
Ran through file: 144 times
Queries sent: 870 queries
Queries completed: 870 queries
Queries lost: 0 queries
Avg request size: 37 bytes
Avg response size: 161 bytes
Percentage completed: 100.00%
Percentage lost: 0.00%
Started at: Mon Feb 22 18:17:43 2010
Finished at: Mon Feb 22 18:17:53 2010
Ran for: 10.105866 seconds
Queries per second: 86.088614 qps
Latency: Min: 0.000284 s; Max: 1.121552 s; Avg: 0.111007 s; StdDev: 0.169328
Response latency distribution (total 870 responses):
Latency Success Fail |
<>= 1.000s 8 0 |#
Legend:
##### = success responses (RCODE was NOERROR or NXDOMAIN)
----- = failure responses (any other RCODE)
Ejemplo 2-2:
Ejecutar 20 queries maximos al servidor localhost con un histograma de 4 por 20 segundos con una cantidad máxima de 25 queries por segundo:
./dnsperf -d queryfile-example-100thousand -q 20 -H4 -l 20 -Q 25
Suerte, espero sea de tu utilidad
Estimado Alejandro, antes que nada muchas gracias por la publicación, me ha sido sumamente útil. Ahora bien, he tenido inconvenientes con la ejecución del Ejemplo 1-2, si bien genera los reportes, los mismos estan con errores debido al siguiente mensaje:
ResponderEliminargnuplot> plot "20111021-0538.gnuplot" using 1:3 title "Queries sent per second" with lines, "20111021-0538.gnuplot" using 1:4 title "Total responses received per second" with lines, "20111021-0538.gnuplot" using 1:5 title "Failure responses received per second" with lines
^
can't read data file "20111021-0538.gnuplot"
line 0: util.c: No such file or directory.
Alguna pista de lo que me puede estar faltando? Estoy corriendo dnsperf en Centos 5
Muchas gracias desde ya
Saludos
Ernesto (esanchez.ar@gmail.com)
Alejandro;
ResponderEliminarGracias por la recomendacion de las herramientas de Nominum. Recientemente hemos actualizado ambas herramientas y publicado la version 2.0.0.0
Pueden Encontrar aqui.
http://www.nominum.com/resources/measurement-tools
Tambien recientemente tuvimos un webinar titulado: ISP Best Practices for Designing and Managing Caching DNS
Atte;
Felipe Tribaldos
(ftribaldos@gmail.com).