Лучший подход для измерения времени разрешения DNS - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю над сценарием на основе Python 3.6 для контроля времени разрешения DNS, используя DNS Python. Мне нужно понять, каков наилучший подход, чтобы получить время разрешения. В настоящее время я использую следующее:

Метод: 1

import dns.resolver
import time

dns_start = time.perf_counter()
answers = dns.resolver.query(domain, qtype)
dns_end = time.perf_counter()
print("DNS record is: " ,answers.rrset)
print('DNS time =' ,(dns_end - dns_start)* 1000,"ms")

Метод 2

import dns.resolver
import time

answers = dns.resolver.query(domain, qtype)
print("DNS record is: " ,answers.rrset)
print('DNS time =' , answers.response.time * 1000,"ms")

Спасибо

1 Ответ

0 голосов
/ 15 декабря 2018

«Это зависит», как гласит известная поговорка.

Вы должны определить, что является «лучшим» для вас в «лучшем подходе».Два метода работают правильно, просто разные вещи.

Сначала будет учитываться как сетевое время, обработка удаленного сервера, а затем локальная генерация и анализ DNS-сообщений, включая время, проведенное Python в библиотеке dnspython.

Второй метод учитывает только сеть и время удаленной обработки: если вы ищете response_time в https://github.com/rthalley/dnspython/blob/master/dns/query.py, вы увидите, что оно вычисляется как разница между временем непосредственно перед отправкой сообщения.(следовательно, после того, как он был собран, поэтому время генерации не будет включено) и сразу после его получения (следовательно, до того, как он будет проанализирован, поэтому время синтаксического анализа не будет включено).

Второй метод может в принципетестируйте производительность удаленного сервера независимо от производительности вашей локальной программы (включая сам Python и библиотеку dnspython) (но будет учитываться сетевое время между вами и удаленным сервером).

Первый метод показывает предполагаемое время, так как включает в себя все время, необходимое в тОн должен что-то сделать, то есть собрать пакет DNS и проанализировать результат, действия, без которых вызывающее приложение ничего не сможет сделать с содержимым DNS.

...