一、Dns壓力測試
1. 目的:同機房與跨機房訪問域名解析服務性能對比、穩定性測試、極限測試。
2. 環境:skydns+etcd集羣,skydns提供域名解析服務,etcd集羣同步冗餘域名信息。
3. 方法:同機房壓測skydns域名解析服務;跨機房從A機房壓測B機房域名解析服務。
4. 測試文件:寫入55個域名,每一次併發發送55個域名。600次併發,發送600次55個域名請求。
5. 壓測工具:
工具:使用bind域名服務提供的域名壓測程序:queryperf
命令:queryperf -d filename -s ip -l 3600 -q 600
命令參數:-d指定域名輸入文件、-s指定ip、-l指定壓測時長、-q指定併發量
6. 網絡拓撲圖:
如上網絡拓撲圖,queryperf程序發送壓測請求到skydns服務器,skydns服務器調度算法讀取etcd上域名信息,然後,返回域名解析結果到queryperf。skydns可以部署在etcd的同一機器上。
7. 服務器配置:
測試機:11核Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz、40G、萬兆網卡
Skydns:7核Intel(R)Xeon(R) CPU E5-2620 v3 @ 2.40GHz、25G、萬兆網卡
etcd:7核Intel(R)Xeon(R) CPU E5-2620 v3 @ 2.40GHz、25G、萬兆網卡
二、同機房測試
1. 同機房極限測試
序號 |
對象 |
時長 |
併發 |
qps |
總數 |
命中率 |
1 |
同機房 |
3600 |
600 |
24962 |
89991308 |
100% |
2 |
同機房 |
3600 |
60000 |
26452 |
98905521 |
0.93% |
3 |
同機房 |
3600 |
12000 |
17739 |
72368985 |
88.36% |
4 |
同機房 |
3600 |
5000 |
28407 |
104898857 |
97.63% |
壓測效果最好在第1項,命中率100%,併發量在600左右,域名解析服務正常;
壓測效果最差在第2項,命中率0.93%,併發量60000左右,域名解析拒絕服務;
壓測效果稍好在第4項,命中率97.6%,併發量5000左右,域名解析服務中良;
2. 同機房穩定性測試
序號 |
對象 |
時長 |
併發 |
qps |
總數 |
命中率 |
1 |
同機房 |
3600 |
600 |
24962 |
89991308 |
100% |
2 |
同機房 |
900 |
1000 |
29751 |
26930924 |
99.98% |
3 |
同機房 |
900 |
2000 |
27961 |
25346056 |
99.82% |
4 |
同機房 |
900 |
3000 |
30646 |
27860677 |
99.55% |
5 |
同機房 |
1800 |
4500 |
28489 |
52402263 |
98.13% |
6 |
同機房 |
1800 |
4500 |
28682 |
52749551 |
98.15% |
第1、2項看出,併發量600-1000,域名解析效果最好,命中率基本穩定在100%;
第3、4項看出,併發量2000-3000,域名解析效果良好,命中率穩定在99.55%以上;
第5、6項看出,併發量4500,域名解析命中率開始降低,命中率穩定98.13%以上;
3. 同機房本地DNS與外網DNS壓測對比
序號 |
DNS |
DNS數量 |
時長 |
併發 |
qps |
總數 |
命中率 |
1 |
本地 |
16 |
300 |
600 |
22148 |
6750701 |
100.00% |
2 |
外地 |
16 |
300 |
600 |
22822 |
6955956 |
100.00% |
3 |
本地 |
16 |
300 |
1000 |
11894 |
3627395 |
100.00% |
4 |
外地 |
16 |
300 |
1000 |
9512 |
2899953 |
100.00% |
5 |
本地 |
16 |
300 |
2000 |
4520 |
1380189 |
99.88% |
6 |
外地 |
16 |
300 |
2000 |
5122 |
1564401 |
99.83% |
7 |
本地 |
16 |
300 |
3000 |
3889 |
1206198 |
98.33% |
8 |
外地 |
16 |
300 |
3000 |
3775 |
1157477 |
99.47% |
9 |
本地 |
16 |
300 |
4000 |
3241 |
1120274 |
92.60% |
10 |
外地 |
16 |
300 |
4000 |
3418 |
1055771 |
98.73% |
第3、4項看出,併發量1000,壓測本地與外地域名有優勢,體現在qps與總數;
第5、6項看出,併發量2000,壓測外地與本地域名有優勢,體現在qps與總數;
第7、8、9、10項看出,併發量3000-4000,壓測外地與本地域名優勢更加明顯;
三、跨機房測試
1. 跨機房穩定性測試
序號 |
對象 |
時長 |
併發 |
qps |
總數 |
命中率 |
1 |
跨機房 |
900 |
600 |
13131 |
11877769 |
99.99% |
2 |
跨機房 |
900 |
1000 |
14173 |
12834572 |
99.93% |
3 |
跨機房 |
900 |
2000 |
14727 |
13437553 |
99.18% |
4 |
跨機房 |
900 |
3000 |
14633 |
13555444 |
97.70% |
第1、2項看出,併發量600-1000,域名解析效果最好,命中率基本穩定在99.90%以上;
第3項看出,併發量2000,域名解析效果良好,命中率穩定在99.1%,出現丟包情況;
第4項看出,併發量4000,域名解析效果中良,命中率穩定在97.7%,丟包情況嚴重;
四、性能對比
1. 同機房與跨機房性能對比
序號 |
對象 |
時長 |
併發 |
qps |
總數 |
命中率 |
1 |
同機房 |
3600 |
600 |
24962 |
89991308 |
100% |
2 |
跨機房 |
900 |
600 |
13131 |
11877769 |
99.99% |
3 |
同機房 |
900 |
1000 |
29751 |
26930924 |
99.98% |
4 |
跨機房 |
900 |
1000 |
14173 |
12834572 |
99.93% |
5 |
同機房 |
900 |
2000 |
27961 |
25346056 |
99.82% |
6 |
跨機房 |
900 |
2000 |
14727 |
13437553 |
99.18% |
7 |
同機房 |
900 |
3000 |
30646 |
27860677 |
99.55% |
8 |
跨機房 |
900 |
3000 |
14633 |
13555444 |
97.70% |
9 |
同機房 |
1800 |
4500 |
28489 |
52402263 |
98.13% |
10 |
同機房 |
1800 |
4500 |
28682 |
52749551 |
98.15% |
第1、2項看出,併發量600,同機房與跨機房域名解析效果基本持平,命中率都在99.99%;
第3、4項看出,併發量1000,同機房與跨機房域名解析效果開始出現差異;
第5、6項看出,併發量2000,同機房與跨機房域名解析效果差異比較明顯;
第5、6項看出,併發量3000,同機房與跨機房域名解析效果差異在2%的命中率;
在qps與域名解析總請求數量上看,任何時刻,本地機房是跨機房的一倍左右;
五、趨勢圖分析
1. CPU空閒
從趨勢圖看來併發量達到60000壓測,cpu仍然健康,說明壓測限制條件不在於cpu。
併發量在600時,cpu最平穩;
出現峯值又逐漸波動降低,開始大量請求涌入,因爲性能問題,無法處理太多請求;
後來出現平穩的波動,開始域名功能平穩測試,併發量在4000-12000不等;
2. 網絡總輸出比特
從趨勢圖來看,網絡輸出比特量永遠沒有達到網卡極限,壓側限制條件不在於網卡
3. 網絡總輸入比特
從趨勢圖來看,網絡輸入比特量永遠沒有達到網卡極限,壓側限制條件不在於網卡
六、結論
壓測性能瓶頸在於dns服務器本身,而跨機房與同機房的qps與總量相差一倍。併發量1000時,dns服務工作穩定。併發量在3000以上,跨機房丟包率比較嚴重,大約2.5%。併發在5000以上,同機房丟包率比較嚴重,大約2.5%。建議儘量避免skydns跨機房訪問,搭建同機房的skydns集羣,搭建跨機房的etcd集羣服務,而同機房的skydns只指向同機房的etcd集羣。