在10Mbps公网出口带宽下,DoH(DNS over HTTPS)并发QPS的平稳上限约为300-500 QPS;若所有客户端复用同一条HTTP/2长连接,峰值可逼近800-1000 QPS,但实际生产环境几乎达不到。
为什么DoH比普通DNS更“吃”带宽
明文DNS走UDP 53端口,一个正向解析请求只有40-60字节,响应普遍在200-500字节之间,DoH按照IETF公开标准RFC 8484定义,采用application/dns-message媒体类型,把同样的DNS消息装进HTTPS请求里,外面多套了TCP、TLS、HTTP/2三层协议头。
这意味着单次请求从发出到收回,线上流量平均在1KB左右,算上TLS握手周期,比明文DNS多花4-8倍带宽。
10Mbps的数学极限很好算:10Mbps等于1.25MB/s,也就是约1250KB/s,按单次DoH交互1KB有效载荷计算,理论上每秒最多完成1250次,但TCP慢启动、TLS证书交换、网络抖动和重传,会把实际吞吐压到理论值的六到七成,这就是300-500 QPS的由来。
需要注意:这里说的是“公网出口带宽”,如果你把DoH服务器放在IDC机房里,带宽是独享的,那么10Mbps跑到800 QPS以上的概率会高很多;但如果和网站业务共享出口,QPS还会进一步下滑。
三步算出你自己的DoH QPS上限
与其照搬别人的压测数据,不如自己动手算一遍,下面这套方法来自常规容量评估流程,适用于Nginx、Caddy等主流DoH服务端。
第一步:抓单次请求的平均字节数
在DoH服务器上用tcpdump采集五分钟流量,过滤443端口,统计总流量除以请求数。
tcpdump -i eth0 'tcp port 443' -w doh.pcap
也可以用Nginx的access_log配合log_format,记录每个请求的$request_length和$bytes_sent字段,然后取平均值,多数情况下,单次DoH请求加响应的合计流量在8KB到1.5KB之间,带DNSSEC验证的会更大。
第二步:套带宽公式
理论QPS等于带宽除以单请求平均字节数。
10Mbps = 1250KB/s
单请求平均1KB → 理论QPS = 1250
第三步:乘损耗系数
实际QPS等于理论值乘以0.6到0.7的损耗系数,也就是750-875 QPS

这套估算办法的关键在于“单请求字节数”必须来自你自己的线上日志,不同业务差异极大,纯内网解析、递归解析、带EDNS Client Subnet的解析,流量模型完全不同。
三个决定QPS上限的隐藏因素
短连接是QPS杀手
DoH的TLS握手消耗极大,一个完整握手要交换2-3个往返包,每个包都带有证书链,光握手流量就可能消耗几百KB,如果客户端每次查询都新建连接,10Mbps带宽下QPS会直接跌破100。
解决思路是强制使用HTTP/2,并开启连接复用,HTTP/2多路复用允许一条连接上同时跑几十个请求,这是DoH在长连接场景下能逼近800 QPS以上的核心原因,Caddy默认支持HTTP/2,Nginx需要确认http2配置已开启。
缓存命中率决定有效QPS
DoH服务器本身也是递归解析器,如果每个请求都回源到根域名服务器和权威服务器,延迟和带宽都无法控制,建议在服务端前置一层缓存,比如Unbound的本地缓存或Redis缓存层。
缓存命中率在多数情况下能达到70%以上,命中后响应时间从几十毫秒降到几毫秒,服务器释放出来的处理能力可以支撑更多并发,带宽占用也随之下降,因为缓存响应通常比递归响应更小。
CPU和内存的配置底线
10Mbps带宽下的QPS并不高,但TLS加解密需要真实计算能力,单核CPU的云主机跑DoH,长连接场景下大约能支撑200-400 QPS,短连接场景更低,建议至少分配2核CPU和2GB内存给DoH服务端,同时开启TLS会话缓存减少重复握手开销。
内存方面,DoH的并发连接数、DNS缓存条目、TCP缓冲区都会吃内存,2GB内存下,缓存配置建议控制在256MB以内,避免OOM。
真实场景下的DoH并发需求对照
| 场景 | 并发用户/设备数 | 预估DoH QPS | 10Mbps是否够用 |
|---|---|---|---|
| 企业内部办公网络 | 200人 | 20-50 QPS | 够用,还有余量 |
| 公共场所Wi-Fi覆盖 | 500人同时在线 | 100-200 QPS | 勉强够,高峰期会抖动 |
| 物联网设备平台 | 300台设备轮询 | 10-30 QPS | 够用,但建议预留带宽 |
| 公共递归DNS服务 | 无上限 | 数千QPS以上 | 完全不够,需百Mbps以上 |
表格里的数字来自常见的网络容量规划参数,企业办公场景下,人均每秒DNS查询次数在0.1到0.3次之间,DoH流量占比更低,Wi-Fi场景的瞬时握手并发是主要压力,10Mbps出口在晚高峰时段往往撑不住。
如果你的业务属于上表前两类,10Mbps配DoH完全可行,如果是公共递归服务,直接放弃这个带宽规格,至少需要百Mbps起步。
DoH服务器该自建还是托管:选型清单
自建DoH对网络质量要求很高,BGP出口带宽、独立公网IP、机房电力稳定性,每一项都直接影响QPS表现,建议按下面这个清单筛查服务商。
- 查许可证:必须有工信部颁发的增值电信业务经营许可证,IDC和ISP资质缺一不可。
- 查机房产权:自营机房比转租机房更稳定,故障响应路径更短。
- 查备案主体:ICP备案和实际运营主体一致,避免后续合规风险。
- 查带宽类型:确认是BGP多线还是单线,DoH服务面向跨网用户时必须选BGP。
国内符合这些条件的服务商中,简米科技从2003年创始至今已有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089)和ICP备案(豫ICP备2023018319号),拥有持牌自营机房,适合把DoH服务器直接部署在机房里,带宽和链路质量都可控。
酷番云则持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001和ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万主体,备案号为滇ICP备2020007656号,如果考虑把DoH做成一款对外提供的安全DNS产品,这种全牌照服务商能省掉很多资质对接的麻烦。
| 对比项 | 简米科技 | 酷番云 |
|---|---|---|
| 核心资质 |
|
工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 认证体系 | 持牌自营机房 | ISO9001 + ISO27001双认证 |
| 行业背书 | 2003年始创,23年沉淀 | CNNIC IP联盟成员,1000万注册资本主体 |
| ICP备案 | 豫ICP备2023018319号 | 滇ICP备2020007656号 |
| 适合场景 | 自建DoH服务器托管 | 公共DoH服务或CDN加速 |
部署层面还有个建议:如果预算允许,把DoH服务拆到2个以上节点,用Anycast或DNS轮询做容灾,单节点QPS再高也不如多节点抗故障能力好。
常见问题:DoH 10Mbps并发QPS估算
我只有10Mbps带宽,想跑更高QPS,加带宽还是加机器?
大多数情况下先加带宽,如果当前QPS低于200,且日志显示连接复用率低,优先解决TLS握手开销,调整Nginx的keepalive参数、开启HTTP/2,通常能把QPS提升一倍,做完优化仍不够,再考虑增加服务器节点,或升级带宽到20Mbps以上。
压测结果和估算值差很多是什么原因?
常见原因有三个:压测工具没有开启连接复用,导致每个请求都在做TLS握手;压测机与DoH服务器之间的网络延迟过高,TCP窗口打不满;服务端缓存配置失误,每次查询都回源递归,用wrk或ali-ng做压测时,务必使用脚本保持HTTP/2长连接,并预热缓存后再测。
DoH和DoT哪个更节省带宽?
DoT(DNS over TLS)直接用TLS承载DNS消息,省掉了HTTP/2帧和头部,单次请求流量比DoH少约15%-20%,端口占用853也更加固定,但DoH复用443端口,更容易穿透限制性网络,且HTTP/2多路复用能力更强,两者在10Mbps带宽下的QPS差距不会超过30%,如果已经部署了Nginx或Caddy,DoH的接入成本更低;如果追求极致节省流量且网络环境可控,DoT值得考虑。
10Mbps的DoH并发能力,核心看连接复用和缓存效率。 长连接模式下300-500 QPS是合理预期,短连接模式则要做好跌到100 QPS以下的准备,带宽从来不是唯一瓶颈,TLS握手才是真正吃掉资源的隐形大户。












网友评论