跳到主要内容

性能与基准

本文档收纳 README 中移出的性能说明与当前基准结果。这里的目标不是宣称绝对胜负,而是给出 ForgeDNS 在不同策略复杂度下的性能轮廓。

性能关注点

ForgeDNS 关注的不是“最简单场景下的极限数字”,而是下面这些更接近真实部署的问题:

  • 开启缓存、规则、回退、重写后,热路径是否仍然可控
  • 多上游并发竞争时,整体时延是否可接受
  • 新增协议和插件后,结构是否还能继续优化
  • 系统联动和观测逻辑是否会拖慢主响应路径

与 mosdns 的一组对比

测试环境:

  • CPU:Intel N100,4 核
  • 内存:1 GB
  • 环境:PVE 虚拟机内的 LXC
  • 系统:Linux 6.8.12-2-pve x86_64
  • 时间:2026-03-26
  • 被测版本:forgedns v0.1.0,mosdns v5.3.4-0-gb732318

压测参数:

  • 工具:dnsperf
  • warmup_seconds=2
  • bench_seconds=8
  • bench_repeats=3
  • dnsperf_clients=32
  • dnsperf_threads=4
  • dnsperf_outstanding=1024
  • dnsperf_max_qps=unlimited

下表为每个场景 3 次测试平均值:

场景ForgeDNS QPSmosdns QPSQPS 对比ForgeDNS 平均延迟mosdns 平均延迟
baseline UDP forward37,789.637,269.2+1.4%9.142 ms12.312 ms
cache hotpath131,982.3133,380.3-1.0%1.235 ms0.696 ms
dual-entry UDP39,614.434,356.8+15.3%8.946 ms10.009 ms
dual-entry TCP36,257.935,975.4+0.8%25.403 ms25.577 ms
concurrent upstreams21,694.813,195.4+64.4%15.065 ms23.790 ms
fallback standby22,259.923,223.9-4.2%16.376 ms10.616 ms
local answers132,286.6146,754.3-9.9%1.250 ms0.636 ms
DoH upstream (HTTP/2)29,781.625,835.7+15.3%13.363 ms11.445 ms
domain set172,061.735,966.1+378.4%0.901 ms4.210 ms
ip set134,257.4150,923.0-11.0%1.227 ms0.625 ms
sequence base131,995.6150,301.5-12.2%1.265 ms0.622 ms
match true135,326.0153,289.5-11.7%1.217 ms0.629 ms
match false136,740.1152,297.5-10.2%1.201 ms0.630 ms
match qname132,289.4152,203.6-13.1%1.248 ms0.638 ms

结果怎么看

从这组样本可以看到:

  • ForgeDNS 在多上游并发、DoH 上游、双入口 UDP 和大规模 domain_set 场景下更有优势
  • mosdns 在缓存命中、本地应答、基础 sequence 和轻量 matcher 场景下目前仍然更快
  • fallback standby 这类链路还有继续优化空间

所以当前更准确的结论不是“ForgeDNS 全面更快”,而是:

在更接近真实策略复杂度的场景里,ForgeDNS 已经展示出明显潜力;在纯热路径场景里,仍有进一步优化空间。

原始资料