一次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}等方法應該也有用。

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