bind9.22,200Mhz的双cpu,dns进程平均占用50%左右的cpu。
请有经验的DX看看这个cpu利用率是否正常,是否需要升级硬件。
realfox 回复于:2004-07-09 13:26:52
看日志
是否是单一大量地址的重复
coolgg 回复于:2004-07-14 14:31:24
正常访问,没有攻击。这样的负载和cpu利用率正常吗?我只是想知道一台普通的dns服务器正常能 承受多大的负荷。
realfox 回复于:2004-07-14 17:27:25
cpu利用也跟一些设置有关系,看你是不是设置了许多log咯,特别是如果要写querylog的话,在这种密度下面还是很费cpu的,以及是不是对所有的请求都进行递归查询。
总而言之呢,你的情况应该算是正常的。
我的u10每秒钟能保证500个的查询量并且写querylog。当然,就比较累了。
阿骁 回复于:2004-07-14 18:04:19
可以用 top 看看系统负载先啊,bind的cache完全放在内存中,也要注意内存的使用情况呀!
jsquan 回复于:2004-07-16 22:53:20
[quote:93a49b9a50="阿骁"]可以用 top 看看系统负载先啊,bind的cache完全放在内存中,也要注意内存的使用情况呀![/quote:93a49b9a50]
请问,你们怎么统计每少350个查询。
问题一:我的dnstop每秒new query最多才100,不能突破这个值。实际上,
我是公网DNS,我认为能够突破100new query,但没有rndc怎么统计?
问题二:除了dnstop和rndc,还有什么其它办法分析,
请阿晓、网中人等版主指教。
網中人 回复于:2004-07-17 00:01:01
對於壓力測試部份, 我沒甚麼經驗, 恐怕幫不上啥忙.
容我抱歉一下了...
leaper 回复于:2004-07-17 10:55:04
不多的。
我个人认为完全正常
realfox 回复于:2004-07-17 16:58:31
[quote:42d795a7b4="jsquan"]
请问,你们怎么统计每少350个查询。
问题一:我的dnstop每秒new query最多才100,不能突破这个值。实际上,
我是公网DNS,我认为能够突破100new query,但没有rndc怎么统计?
问题二:除了dnstop和rndc,还..........[/quote:42d795a7b4]
dnstop 统计压力还不够么?
jsquan 回复于:2004-07-17 18:30:03
[quote:d4af183198="realfox"]
dnstop 统计压力还不够么?[/quote:d4af183198]
不是不够啊。请你看清我的问题,为什么new query <100。
标题中提到的350是怎么统计出来的呀。
你的dnstop new query > 100 ?
请你帮忙呀。
rayharris 回复于:2004-07-19 10:15:23
querylog一般还是别开的好,消耗资源,这样测出的性能也不是很准。
可以用tcpdump在别的机器上抓包来分析,看给定时间内的查询量,这个还是比较好实现的,另外还可以在这个基础上分析查询的来源,用awk就可以做到简单的分析了。
abel 回复于:2004-09-02 21:33:33
http://rs.twnic.net.tw/DNS93/download/93DN-2.pdf
裏面有一章教大家怎做流量分析...
bind 8,bind 9 都有教,好好學起來就不會困擾了
(抓不到的你請別人轉,在台灣,我們每年都會教 .tw 的用戶 DNS各種技巧)
http://www.myhome.net.tw/2003_10/web/main3.htm
壓力測試, Ethernet 用 8 或 9 都可以每秒3000次以上,看環境,
我在實際的 Giga Bit 上測,更可以到 13000 次./秒 以上,且完全沒當機
coolgg 回复于:2004-10-15 14:04:35
我从7月19日开始统计dns负载,到今天得到以下数据:
没有开query log,忙时每秒超过1000次查询(含recursion,按每小时查询量/3600计算),全天平均也在每秒600次左右,cpu利用率平均超过50%,named占用内存大约150MB,大家是否有类似的实际使用经验?
另外,查询次数是否可以有经验值得到大致的等效在线用户数?
abel 回复于:2004-10-15 16:16:57
[quote:e11b5c3aa3]我从7月19日开始统计dns负载,到今天得到以下数据:
没有开query log,忙时每秒超过1000次查询(含recursion,
按每小时查询量/3600计算),全天平均也在每秒600次左右,
cpu利用率平均超过50%,named占用内存大约150MB,大家是
否有类似的实际使用经验?
[/quote:e11b5c3aa3]
我們家的一台 dns 主機為例,天平均 400 次查詢/秒為例, 單 CPU 1.2G
RAM 1G, 不遞歸查詢,大概是CPU 5% 的負載,至於 RAM 佔用情形因
為不遞歸,所以不會有 Cache,大約是 50MB 的使用情形.
以您的狀況來說我覺得很合理,因為你開 recusion,及還有 cache
情形等等.我有跑過每秒 6000 次的遞歸查詢,硬體差不多,大概
CPU 會佔用 80%,RAM 則會一直長,大概長到 260MB,持續三天一直測
過程中從沒有當機情形,用 9.2.x+ 或 8.3.x+ 都可以達到這個水準,
但 8.3.x+ CPU 的使用會小一點.所以你可放心. 唯需注意,若 Failure
次數或比例過高(例如 3~5%),就應當做出適當之調整較好.
[quote:e11b5c3aa3]
另外,查询次数是否可以有经验值得到大致的等效在线用户数?
[/quote:e11b5c3aa3]
如果能確定都是您的用戶會最好可以,大約等同於網路的活動,也就是
正相關係數,
coolgg 回复于:2004-10-15 17:15:28
多谢abel热情回答,看了您推荐的http://www.myhome.net.tw/2003_10/web/main3.htm上的http://rs.twnic.net.tw/DNS92/download/92DN-1.ppt
发现是我看过的最容易理解的好教材了:)
阿骁 回复于:2004-10-16 23:57:51
刚出差回来,又看到 abel 兄的精彩帖子,忍不住又加精华了。
嘿嘿 。。。
skylove 回复于:2004-10-17 01:26:45
看了abel兄的.tw的帖子。。。。。。。就一个感觉——羡慕!
大陆的域名解析提供者,例如.cn的。。。从来没有介绍过这些知识。因此很多用户对dns都是一知半解——设置是很多dns server的管理员对dns的工作情形都是所知甚少(例如我)。。。。而至于不提供反向解析等等问题不提也罢。
我真的很羡慕在台湾的同行和学生们。
coolgg 回复于:2004-10-17 10:52:29
我是isp的,我主要搞路由器和交换机,对DNS也不懂,我们这里也没人清楚。
我们全国网管中心有一两个人懂一些,也不多。
正在好好学习,天天向上中...
skylove 回复于:2004-10-17 15:54:05
我日。。。。。那怎么不招一个懂dns的人进去???
coolgg 回复于:2004-10-18 12:31:33
现在上上下下人都在跑,搞得我也不得不开始学DNS啦。
wingger 回复于:2004-10-18 16:17:22
汗,俺用的是win的DNS,需加反向是来CU以后看到大家的贴子才知道
呵,相通
網中人 回复于:2004-10-18 17:03:16
win dns 不是按幾個鍵就可設好反解了嗎?
然而, 我一直以來不斷的指出的關鍵是在於:
不是如何設, 而是該不該設?!
abel 回复于:2004-10-18 19:12:36
[quote:ec7efc8496="coolgg"]我是isp的,我主要搞路由器和交换机,对DNS也不懂,我们这里也没人清楚。
我们全国网管中心有一两个人懂一些,也不多。
正在好好学习,天天向上中...[/quote:ec7efc8496]
以 coolgg 兄的狀況來說,如果 coolgg 兄了解了 DNS 反解設定,及反解的
授權原理(未滿一個 C),我會建議您,在 ISP 的差異行銷上(多數的東西都大
同小異),您提供您客戶反解的設定網頁,或是授權指向,相信對貴公司的
業務會有不少的幫助,如果沒有...我也沒辨法,但可以借此教育您的 user
也不錯,尤其是和國外往來多的公司,在郵件上的反解需求通常會較高
個人曾看到 sina.com.cn 上的一個 Mail FAQ...
大意大概是:
對於國外寄到 sina.com.cn 的 MAIL 他們會 check 反解,沒反解,他們不會收
對於中國之下的 IP,他們不會 Check 反解,只以 ehlo 來驗證..
...無言
coolgg 回复于:2004-10-18 20:26:39
abel先生说得不错,我们这里还没有给客户做反向解析(只有我们自己的主机做了).以前曾经有客户提出过这样的需求.当时我们这里管DNS的同事还不会做:(
我准备好好学一下,然后把dns的配置清理一遍.
近期准备把所有的地址都先用$generate 先做起来,然后根据客户需要改成用户域名或者授权给用户自己设置.
abel 回复于:2004-10-20 20:59:59
$generate 適合固定的表示法,通常用在動態IP 這磈上不錯
因為 USER 不可能跟你要反解授權,但若是一般固定 IP
您可能因為他的要求, 他的資料卡在中間,一個 $generate
你就要拆成兩個寫,以後再有一個客戶要做,就要再拆,久了就失去意義了.
(當然,多數人的要求可能只是要有反解就好,不見得要一致或要授權)
這裏提供您一個方式,當然只是觸發您的思考而以,我沒有做的很仔細
[code:1:fbedc473c5]
-- MYSQL Table for DNS data
CREATE TABLE PTR (
SN int(20) NOT NULL auto_increment,
DOMAIN varchar(64) NOT NULL default '',
FQDN varchar(64) NOT NULL default '',
TYPE varchar(10) NOT NULL default '',
RDATA varchar(64) NOT NULL default '',
PRIMARY KEY (SN),
KEY DOMAIN (DOMAIN),
KEY TYPE (TYPE),
KEY RDATA (RDATA)
) TYPE=MyISAM;
--
-- Dumping data for table 'PTR'
--
-- 1.2.3 為 network id,正向寫法
-- 1.3.2.1.in-addr.arpa. 為 FQDN 寫法
INSERT INTO PTR VALUES (1,'1.2.3','1.3.2.1.in-addr.arpa.','PTR','1-2-3-1.isp.net.cn.');
INSERT INTO PTR VALUES (2,'1.2.3','2.3.2.1.in-addr.arpa.','PTR','1-2-3-2.isp.net.cn.');
INSERT INTO PTR VALUES (3,'1.2.3','3.3.2.1.in-addr.arpa.','PTR','1-2-3-3.isp.net.cn.');
INSERT INTO PTR VALUES (4,'1.2.3','4.3.2.1.in-addr.arpa.','PTR','1-2-3-4.isp.net.cn.');
INSERT INTO PTR VALUES (5,'1.2.3','5.3.2.1.in-addr.arpa.','PTR','1-2-3-5.isp.net.cn.');
INSERT INTO PTR VALUES (6,'1.2.3','6.3.2.1.in-addr.arpa.','PTR','1-2-3-6.isp.net.cn.');
INSERT INTO PTR VALUES (7,'1.2.2','1.2.2.1.in-addr.arpa.','PTR','1-2-2-1.isp.net.cn.');
INSERT INTO PTR VALUES (8,'1.2.2','2.2.2.1.in-addr.arpa.','PTR','1-2-2-2.isp.net.cn.');
INSERT INTO PTR VALUES (9,'1.2.2','3.2.2.1.in-addr.arpa.','PTR','1-2-2-3.isp.net.cn.');
INSERT INTO PTR VALUES (10,'1.2.2','4.2.2.1.in-addr.arpa.','PTR','1-2-2-4.isp.net.cn.');
INSERT INTO PTR VALUES (11,'1.2.2','5.2.2.1.in-addr.arpa.','PTR','1-2-2-5.isp.net.cn.');
INSERT INTO PTR VALUES (12,'1.2.2','6.2.2.1.in-addr.arpa.','PTR','1-2-2-6.isp.net.cn.');
INSERT INTO PTR VALUES (13,'1.4','1.2.4.1.in-addr.arpa.','PTR','1-2-4-1.isp.net.cn.');
INSERT INTO PTR VALUES (14,'1.4','2.2.4.1.in-addr.arpa.','PTR','1-2-4-2.isp.net.cn.');
INSERT INTO PTR VALUES (15,'1.4','3.2.4.1.in-addr.arpa.','PTR','1-2-4-3.isp.net.cn.');
INSERT INTO PTR VALUES (16,'1.4','4.2.4.1.in-addr.arpa.','PTR','1-2-4-4.isp.net.cn.');
INSERT INTO PTR VALUES (17,'1.4','5.2.4.1.in-addr.arpa.','PTR','1-2-4-5.isp.net.cn.');
INSERT INTO PTR VALUES (18,'1.4','6.2.4.1.in-addr.arpa.','PTR','1-2-4-6.isp.net.cn.');
[/code:1:fbedc473c5]
[code:1:fbedc473c5]
#!/bin/sh
# Mysql 連接定義
MYSQL="mysql -h host -u username -pPassword Dbname"
# TLD,做用不大,但若要產生不同的 TLD 時用 (RBL,替您先考量好 RBL 需要)
TLD="in-addr.arpa"
# 有問?#125;時的 mail
EMAIL="abel@isp.net.cn"
# zone file 產生的暫存路徑
TMP_DIR=/home/abelyang/tmp
# named 的目錄所在
NAMED_DIR=/var/named
# 找出所有的 domain
for domain in `echo "select DOMAIN from PTR where TYPE='PTR' group by DOMAIN" | $MYSQL | grep -v DOMAIN`
do
# 產生 named.conf 中的 zone 宣告, named.conf 中使用 include "/var/named/named.conf.include" 來取用
echo $domain| awk ' BEGIN { FS="."}{ print $4"."$3"."$2"."$1 }'| sed -e "s/^\.*\([0-9].*\)/zone \"\1.$TLD\" {type master;file \"$domain\";};/g" >>$TMP_DIR/named.conf.include
# 反解名稱,因為我的例子中寫成 1.2.3 ,實際 DNS 表現為 3.2.1
rev=`echo $domain| awk ' BEGIN { FS="."}{ print $4"."$3"."$2"."$1 }'| sed -e 's/^\.*\([0-9].*\)/\1/g'`
# 產生 zone file SOA/NS RR, 這個 NS RR 要經過 APNIC 授權,且 Zone 一致
# http://www.apnic.net/services/rev-del/new-domain.html
cat << EOF >$TMP_DIR/$rev.$TLD
\$TTL=3600
\$ORIGIN $TLD.
$rev IN SOA ns1.isp.net.cn. abel.isp.net.cn ( $(date +%s) 10800 3600
864000 86400)
IN NS ns1.isp.net.cn.
IN NS ns2.isp.net.cn.
EOF
# 將 PTR 資料放進該 Zone 之內
echo "select concat(FQDN,\" IN \",TYPE,\" \",RDATA) from PTR where DOMAIN='$domain' and TYPE='PTR'"|$MYSQL | grep -v 'concat' >>$TMP_DIR/$rev.$TLD
done
# 先檢查 zone file block 數是否正確,以預防 mysql 失效或?#93;有資料,這個6只是一個經驗值
cnt=`du -s $TMP_DIR`
if [ $cnt -gt 6 ]
then cp -f $TMP_DIR/* $NAMED_DIR/
# 量對才 copy 覆蓋及 rndc reload
rndc reload
# 量不對表示 Mysql 可能有問?#125;,不 reload DNS 免得出錯
else echo "Reverse DNS have no data!!"| mail $EMAIL -s "PTR no data"
fi
[/code:1:fbedc473c5]
只要做一個網頁,讓 User 自己去改 PTR 資料, update 到 mysql 中即可,若您要開放
CNAME, 上述的部份可能 TYPE 要補 CNAME 描述,但相信若您介面或功能做的好, User
不太可能使用 CNAME
另外,有是反解若這樣做了的話,正解也可以做了,也就是可以幫人家做代管
因為花的工作其實是差不了多少的,因為作法都雷同
不建議您用資料庫直接做,像 Powerdns 或 mydns 那種對一般公司還
可以,但對代管或 ISP 反解而言,遭受攻擊時,無法應付每秒超過千次的查
詢.
Ex: I hate you, 且發現你跑 Powerdns/mysql , 那我就送一堆 query
給你,基本上這種 DNS 在壓力下很容易掛
coolgg 回复于:2004-10-21 11:04:27
多谢abel的帮助,看你的shell这么熟,真是佩服呀。
继续好好学习...
abel 回复于:2004-10-21 11:36:05
過獎~
我的 shell script 和 netman 兄或 Shell 版幾位朋友比起來差多了...
至於上面用意只是一個流程介紹為主,若您熟
C/PHP/Perl/jave ...也都可以做,概念都一樣的
像 CNNIC 也是類似的作法而以...
只是你要在考慮自己的 bussniss model
例如,客戶如何和 IP/DN 資料對應,欠費時如何處理 ...
線路停掉或轉走後,這邊要有什麼機制...
zsxx2004 回复于:2005-01-17 13:58:32
哪位朋友能把上面网友说的:http://rs.twnic.net.tw/DNS92/download/92DN-1.ppt
贴出来供我们下载,因为这个链接已经打不开啦。
ree 回复于:2005-07-05 20:38:15
没有用过200M的CPU,接触的设备里最差的就是e250了,应该是400M的。
双400MCPU应该能够承受3000qps。(idle=0)
这可是实际经验值。就是说,看到系统cpu idle=0时候测得的数值,一般到70-80%的占用就应该考虑升级了。apnic建议最好有3倍的平时流量作富裕。就是说,省级到至少平时的CPU占用应该在30%左右的机型就可以了。
350x3=1050qps 这样的机器应该很便宜,我见过一台B100 单CPU好像
就能承受1000qps。所以,好好考虑一下吧!
[quote:09d60602a7="coolgg"]bind9.22,200Mhz的双cpu,dns进程平均占用50%左右的cpu。
请有经验的DX看看这个cpu利用率是否正常,是否需要升级硬件。[/quote:09d60602a7]
ree 回复于:2005-07-05 20:41:30
[quote:6b5eb76605="阿骁"]可以用 top 看看系统负载先啊,bind的cache完全放在内存中,也要注意内存的使用情况呀![/quote:6b5eb76605]
其实,内存资源的占用不会太影响DNS的性能,因为一台DNS中的Cache在稳定后,一般也就是300M左右,一般的设备这个配置都能满足。最重要的是CPU资源。