![提高bind9服务重启的性能](https://linux22.com/image/534894/%E6%8F%90%E9%AB%98bind9%E6%9C%8D%E5%8A%A1%E9%87%8D%E5%90%AF%E7%9A%84%E6%80%A7%E8%83%BD.png)
我正在为大量域名(50,000 - 100,000 个域名)设置托管 DNS 的名称服务器。
我将使用 Bind9,并且该服务每天需要重启几次。
我做了一些测试,看来 Bind9 服务的重新启动与域的数量的匹配很差。
#domains | restart time
-----------------------
10,000 | 3.1 sec
25,000 | 8.9 sec
50,000 | 50 sec
100,000 | 7:50 min
有什么方法可以加快服务重启速度?我注意到重启仅使用一个核心,有什么方法可以让它使用更多核心吗?
Bind9版本为9.7.1-P2,采用默认配置。
运行 Bind9 的服务器是 Intel Core 2 Due 2.93 GHz,配备 4 GB 内存和 Ubuntu Server 10.10。
任何帮助将不胜感激。
答案1
有很多域名 :)
好的 - 您遇到的 BIND 及其平面文件配置方法存在固有问题;它无法扩展。我认为您在 7 分钟内启动它实际上做得很好,我听说相同数量的域名需要 30 多分钟。
建议的解决方案是将域配置迁移到数据库支持的解决方案。从整体性能来看,每秒最大查询数会稍微慢一点(大概慢 15%),但应该会大大提高启动性能。
我用 BIND 做这件事已经有一段时间了,但有补丁可以让它使用 DNS。也许有完整的软件包可用,我不知道。我记得它的一个问题是它为每个域建立了一个新的 MySQL 连接,这很糟糕(tm)。
我实际上建议尝试一个针对此类情况进行优化的替代 DNS 服务器。我之前使用过 PowerDNS 作为解决方案。它速度很快,其设计架构已规划为数十万到数百万个域,当然还有数据库支持。
如果失败了,我想您可以尝试将配置文件放在 tmpfs 或类似的东西上以将其保存在内存中,但我不认为这会带来太多的性能提升,因为您实际上并不是受 I/O 限制,而是受 CPU 限制。