Cloudflare 近日宣布,通过对其核心 DNS 缓存平台 Big Pineapple 的底层数据结构进行深度优化,成功释放了高达 100TB 的系统内存资源。此次优化未依赖硬件升级,而是通过重构 Rust 语言编写的关键组件实现,在显著降低内存占用的同时,还提升了缓存查询效率与系统吞吐量。
作为支撑 1.1.1.1 公共 DNS、Gateway DNS 防火墙及 AS112 等关键服务的核心平台,Big Pineapple 每日处理超 2500 亿条缓存记录。在如此庞大的数据规模下,每条记录的微小优化都能产生显著影响。Cloudflare 工程师指出,传统 DNS 缓存条目采用动态数组(Vec)和可变字符串(String)存储数据,即使记录写入后不再修改,仍会保留扩容预留空间,导致每个字段额外消耗 8 字节内存。
优化团队首先用不可变数组(Box<[T]>)替代动态数组,彻底移除扩容预留空间。针对缓存条目中平均存在的 8 个动态字段,此项调整单条记录即可节省 64 字节内存。按 2500 亿条记录计算,仅此一项便释放超过 15TB 内存。进一步优化中,工程师将原本分散存储的 DNS 响应数据、权威记录和附加记录合并为单一列表,通过偏移量定位不同区域,使每个条目再减少 28 字节指针开销。
针对域名重复存储问题,优化方案引入智能引用机制。当缓存记录的所属域名(owner)与查询域名相同时,系统不再重复存储完整域名,仅在 CNAME 等特殊情况下保留完整信息。读取时若检测到空 owner 字段,则自动从查询键中恢复域名。这种设计在保证功能完整性的前提下,进一步压缩了存储空间。
面对 Rust 枚举类型(enum)的空间浪费问题,工程师采取差异化存储策略。将 TXT、NAPTR 等大型记录类型移至堆内存,而占流量 80% 以上的 A/AAAA 记录则直接存储在栈中。这种调整使单条 A 记录内存占用减少 120 字节,但初期因堆分配开销导致性能波动。最终解决方案是将所有记录数据转为连续原始字节流,集中存储在不可变字节数组(Box<[u8]>)中,既消除了枚举开销,又提升了 CPU 缓存命中率。
生产环境部署数据显示,优化后的系统在 p99 极端情况下,单实例内存占用从 9.3GB 降至 5.3GB,降幅达 43%;p90 常规场景下从 6.5GB 降至 3.8GB。基准测试表明,单条缓存记录内存占用从 953 字节压缩至 420 字节,降幅 56%;内存分配量从 1.1KB 降至 461 字节,减少 58%。性能方面,缓存插入吞吐量提升 43% 至每秒 89.3 万条,查询延迟降低 19% 至 670 纳秒。
Cloudflare 透露,优化措施自 2026 年 5 月启动分阶段部署,至 7 月初已完成全球服务集群的全面升级。释放的内存资源将用于扩大 DNS 缓存容量,在保持总内存使用量不变的前提下,预计可提升缓存命中率并减少 30% 以上的上游查询请求。此次优化不仅验证了 Rust 语言在高性能网络服务中的潜力,也为大规模分布式系统的内存管理提供了新范式。










