一次BIND DLZ服务器的调优

公司需要建立个非传统的DNS服务器,目前的数据已经1000W+,如果业务发展OK,后续可能会爆炸式增长。

采用的是BIND DLZ+MYSQL,因为是第一次安装此类型服务器,所有配置都是按照网上教程配置,

为host建立了索引,同时还建立了分区存储,按理说1000W+的数据查询应该很快,在数据库中直接查询也是非常快。但是测试DNS返回一般要3S以致更多。


跑到官网http://bind-dlz.sourceforge.net/mysql_driver.html上一条一条看了下:

Fourth line: {select zone from dns_records where zone = '%zone%'}

This query is used by findzone() in the MySQL driver.

一想不对啊,目前1000W+数据都是一个zone的,那不是要取出1000W+数据,当然慢了,于是故意敲错zone,2MS就返回了!!

于是新建一个表:

CREATE TABLE `supported_zone` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `zone` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

在表supported_zone中加入zone数据

将named.conf中的上述语句修改为:

{select zone from supported_zone where zone = '$zone$'}

于是瞬间秒回了:

;; Query time: 2 msec

当然给dns_records表建立索引{select zone from dns_records where zone = '%zone%' limit 1}等方法应该也有用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章