测量 DNS 解析时间的最佳方法
Best approach to measure DNS resolution time
我正在开发一个基于 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")
方法二
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")
谢谢
"It depends"俗话说
您需要在 "best approach" 中为您定义什么是 "best"。这两种方法做事正确,只是不同。
第一个将计算网络时间、远程服务器处理,然后是本地生成和解析 DNS 消息,包括 Python 在 dnspython 库中花费的时间。
第二种方法仅考虑网络和远程处理时间:如果您在 https://github.com/rthalley/dnspython/blob/master/dns/query.py 中搜索 response_time
,您会看到它是根据发送前的时间差计算的消息(因此在构建之后,因此不会包括生成时间)和刚收到消息之后(因此在解析之前,因此不会包括解析时间)。
第二种方法基本可以测试远程服务器的性能,不考虑你本地程序(包括Python本身和dnspython库)的性能(但是你和远程服务器之间需要的网络时间会被计算在内) .
第一种方法显示感知时间,因为它包括代码中执行某些操作所需的所有时间,即构建 DNS 数据包和解析结果,没有这些操作,调用应用程序将无法对 DNS 内容执行任何操作。
我正在开发一个基于 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")
方法二
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")
谢谢
"It depends"俗话说
您需要在 "best approach" 中为您定义什么是 "best"。这两种方法做事正确,只是不同。
第一个将计算网络时间、远程服务器处理,然后是本地生成和解析 DNS 消息,包括 Python 在 dnspython 库中花费的时间。
第二种方法仅考虑网络和远程处理时间:如果您在 https://github.com/rthalley/dnspython/blob/master/dns/query.py 中搜索 response_time
,您会看到它是根据发送前的时间差计算的消息(因此在构建之后,因此不会包括生成时间)和刚收到消息之后(因此在解析之前,因此不会包括解析时间)。
第二种方法基本可以测试远程服务器的性能,不考虑你本地程序(包括Python本身和dnspython库)的性能(但是你和远程服务器之间需要的网络时间会被计算在内) .
第一种方法显示感知时间,因为它包括代码中执行某些操作所需的所有时间,即构建 DNS 数据包和解析结果,没有这些操作,调用应用程序将无法对 DNS 内容执行任何操作。