测试 DNS 延时通常有以下几种方法:
1. 使用命令行工具
单次测试
dig baidu.com
带时间统计
dig baidu.com | grep "Query time"
指定 DNS 服务器
dig @8.8.8.8 baidu.com
多次测试取平均
for i in {1..5}; do dig baidu.com | grep "Query time"; done查看解析时间 nslookup -type=A baidu.com 指定 DNS 服务器 nslookup baidu.com 8.8.8.8
time + dig**(测量整体耗时)
time dig baidu.com
2. 使用专用测试工具
安装 sudo apt install dnsperf # Ubuntu/Debian 创建查询文件 echo "www.baidu.com A" > queries.txt 运行测试 dnsperf -s 8.8.8.8 -d queries.txt -l 10
类似 ping 的连续测试 dnsping baidu.com
3. Python 脚本测试
import dns.resolver
import time
def test_dns_latency(domain, dns_server='8.8.8.8'):
resolver = dns.resolver.Resolver()
resolver.nameservers = [dns_server]
total_time = 0
count = 10
for i in range(count):
start = time.time()
try:
answers = resolver.resolve(domain, 'A')
end = time.time()
latency = (end - start) * 1000 # 转换为毫秒
total_time += latency
print(f"尝试 {i+1}: {latency:.2f} ms")
except Exception as e:
print(f"尝试 {i+1}: 失败 - {e}")
if count > 0:
print(f"\n平均延时: {total_time/count:.2f} ms")
使用示例
test_dns_latency("baidu.com", "114.114.114.114")4. 在线工具
Pingdom Tools:https://tools.pingdom.com/
DNS Speed Test:https://www.dnsperf.com/
GRC's DNS Benchmark:Windows 专用工具
5. 综合测试脚本(Bash)
#!/bin/bash
DOMAIN="baidu.com"
DNS_SERVERS=("8.8.8.8" "114.114.114.114" "223.5.5.5" "1.1.1.1")
echo "DNS 延时测试 - $DOMAIN"
echo "========================="
for server in "${DNS_SERVERS[@]}"; do
echo -n "测试 $server ... "
total=0
count=3
for i in $(seq 1 $count); do
query_time=$(dig @$server $DOMAIN +stats 2>/dev/null | grep "Query time" | awk '{print $4}')
total=$((total + query_time))
done
average=$((total / count))
echo "平均延时: ${average}ms"
done6. 关键指标解读
< 50ms:优秀
50-100ms:良好
100-200ms:一般
> 200ms:较差
7. 测试建议
1、多次测试取平均:减少网络波动影响
2、测试不同时段:高峰期和平峰期对比
3、测试不同 DNS:比较多个公共 DNS 性能
4、测试本地和远程:了解本地 DNS 服务器性能
5、清除缓存测试:避免缓存干扰真实延时
清除本地 DNS 缓存 Linux sudo systemd-resolve --flush-caches macOS sudo killall -HUP mDNSResponder Windows ipconfig /flushdns
选择合适的方法,根据你的操作系统和需求进行测试即可。
文章摘自:https://idc.huochengrm.cn/dns/23018.html
评论