歡迎您光臨本站 註冊首頁

DNS cpu 太高了

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

DNS cpu 太高了

看到一篇帖子說DNS cpu 佔用率過高,看了回帖,發現我這個問題還是有不同的。



機器是雙cpu的
用dnstop查看的結果
Queries: 506 new, 17119 total                          Wed Jul 22 14:22:59 2009

Sources            Count      %
-------------- --------- ------
11.11.11.11          106    0.6
。。。。。。。。。


用top查看結果
top - 14:23:57 up 16 days,  1:16,  2 users,  load average: 1.22, 1.21, 1.18
Tasks:  86 total,   2 running,  74 sleeping,  10 stopped,   0 zombie
Cpu(s): 19.3%us,  6.9%sy,  0.0%ni, 72.7%id,  0.0%wa,  0.0%hi,  1.1%si,  0.0%st
Mem:   4152048k total,  1289400k used,  2862648k free,   167848k buffers
Swap:  7815612k total,        0k used,  7815612k free,   901444k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
8878 root      20   0 59336  55m 1896 R   94  1.4  51:30.14 named
8732 mysql     20   0  137m  28m 5036 S   11  0.7   9:07.63 mysqld
8975 root      20   0  2308 1088  856 R    0  0.0   0:00.01 top

這台機器是專用的DNS伺服器。
Named 進程cpu佔用率一直是90% 多

貼一下named.conf  配置文件
沒有開啟recursion   數據是從mysql資料庫 讀取的。   

options {
        pid-file "/var/run/named.pid";
        allow-query { any; };
        recursion no;
        version "gaint-d1";
};

key "rndc-key" {
       algorithm hmac-md5;
       secret "xLTl+WTLNa/gF3djG4Q8Dw==";
};

controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
};
logging {
        channel query_log {
                file "/var/log/query.log" versions 3 size 20m;
                severity info;
                print-time yes;
                print-category yes;
        };
        category queries {
                query_log;
        };
};
include"/var/named/ipList.acl";
view "anhuidianxin" {
        match-clients { anhuidianxin; };
dlz "Mysql zone" {
        database "mysql
{host=127.0.0.1 dbname=xxx ssl=false port=3306 user=xxx pass=xxx}
{select p_value from domain_area_parse where zone='%zone%'}
{select ttl, p_type, mx_priority, case when lower(p_type)='txt' then concat('\"',p_value,'\"')
        when lower(p_type)='soa' then concat_ws(' ',p_value,resp_person,serial,refresh,retry,expire,minimum) else p_value end as cdn from domain_area_parse where p_area=7 and p_state='1' and zone='%zone%' and p_domain_name='%record%'}";
        };
};

[ 本帖最後由 aobai 於 2009-7-22 14:52 編輯 ]
《解決方案》

不知是LZ看錯了,還是我看錯了,CPU佔用20%多啊,何來90%。當然做為DNS伺服器這20%多主要是named進程佔用的這很正常啊。

Cpu(s): 19.3%us,  6.9%sy,  0.0%ni, 72.7%id,  0.0%wa,  0.0%hi,  1.1%si,  0.0%st

[ 本帖最後由 llzqq 於 2009-7-23 06:53 編輯 ]
《解決方案》

原帖由 llzqq 於 2009-7-23 06:50 發表 http://bbs2.chinaunix.net/images/common/back.gif
不知是LZ看錯了,還是我看錯了,CPU佔用20%多啊,何來90%。當然做為DNS伺服器這20%多主要是named進程佔用的這很正常啊。

Cpu(s): 19.3%us,  6.9%sy,  0.0%ni, 72.7%id,  0.0%wa,  0.0%hi,  1.1%si,  0.0%st


是我看錯了。    面壁思過      

還可以優化不?  
我覺得如果優化應該從MYSql 數據這個方向考慮
《解決方案》

原帖由 aobai 於 2009-7-23 09:25 發表 http://bbs2.chinaunix.net/images/common/back.gif



是我看錯了。    面壁思過      

還可以優化不?  
我覺得如果優化應該從MYSql 數據這個方向考慮

對於大併發量的DNS,如果採用的是BIND+DB的模式,要考慮採用DB集群模式。因為這裡DB是瓶頸。或者放棄讓BIND直接查詢DB這個模式。
《解決方案》

在ubuntu中運行 dnstop  -l 4  eth0  

Queries: 506 new, 17119 total                          Wed Jul 22 14:22:59 2009

Sources            Count      %
-------------- --------- ------
11.11.11.11          106    0.6
。。。。。。。。。

也就500左右。 這個並不大。

http://bind-dlz.sourceforge.net/perf_tests.html

上面網頁最後說mysql跑600多都 沒有問題,現在還沒有必要換資料庫。

如果以後大了就喊DB吧




今天聽人說自己在bind中改代碼,然後自己實現了一個我們dlz 模塊的功能(他說是查詢資料庫), 據說能夠併發上萬  ,不可思議。。 為什麼不用dlz呢? dlz 處理上萬的應該也不是問題丫 。。

如果放棄bind+資料庫 模式, 難道自己讀配置文件?

還有其他的模式沒有?

[ 本帖最後由 aobai 於 2009-7-24 16:06 編輯 ]
《解決方案》

如果量大,DB的查詢是很大的瓶頸,我們採取的方法是用資料庫管理用戶、配置文件和zone文件,通過程序將資料庫寫入文件由bind讀取,畢竟dns修改頻率不高,而且生效又無需實時,這樣足夠了,沒必要在每台伺服器上都運行資料庫,這樣也減少了負載,增加了安全性
《解決方案》

原帖由 kor 於 2009-7-28 10:40 發表 http://bbs2.chinaunix.net/images/common/back.gif
如果量大,DB的查詢是很大的瓶頸,我們採取的方法是用資料庫管理用戶、配置文件和zone文件,通過程序將資料庫寫入文件由bind讀取,畢竟dns修改頻率不高,而且生效又無需實時,這樣足夠了,沒必要在每台伺服器上 ...


不知道我的理解對不?

你的意思是這樣

首先用資料庫管理相關的文件和數據
然後在資料庫中查詢相關的欄位,生成我們一般的配置文件(不用dlz)
因為DNs 改變不大,所有這樣做也是可行的。。

這樣就牽涉到一個問題?

dlz到底有什麼優勢?

除了用資料庫管理方便,能夠不用重啟就更新,還有什麼更加突出的優勢?


其實我們以前是用腳本實現了一個這樣的功能的, 為的是使用dlz的bind出問題后我們能夠很快的切換到不使用dlz的模式。

[火星人 ] DNS cpu 太高了已經有909次圍觀

http://coctec.com/docs/service/show-post-21459.html