DNS服务部署的那点事儿之DNS压力测试

简介:

#刚才发博文提示大于15万字儿,写不开了,单独开篇博文来补充一下

Bind压力测试

bind有专门的工具可以将配置文件的数据放入到数据库中,对于bind来讲,最常见的压力测试软件是querypery,此工具是bind源码包自带的一个工具,但安装完bind之后很有可能官方的包并没有给我们提供由此我们不得不去自己编译安装它

1.安装queryperf

可以在www.isc.org 下载bind10-1.1.0并安装它们

[root@testtools]# wgethttps://www.isc.org/downloads/file/bind-9-9-4-p1-tar-gz/?version=tar.gz

[root@testtools]# cd bind-9.9.4-P1/contrib/queryperf/

[root@testqueryperf]# make

gcc  -DHAVE_CONFIG_H -c queryperf.c

gcc  -DHAVE_CONFIG_H  queryperf.o -lnsl -lresolv  -lm -o queryperf

#不用直接make install 将queryperf 拷贝至/bin/目录即可

[root@testqueryperf]# cp queryperf /bin/


2.使用queryperf

首先创建文件指定需要测试的域名和记录类型

[root@test~]# cat test.txt

www.test.comA

test.comNS

10.0.10.60PTR

使用-d指定数据文件做压力测试的时候要对其解析哪些记录为基准型测试,-s 指定需要压测的服务器IP

[root@test~]# queryperf -d test.txt -s 10.0.10.60

DNSQuery Performance Testing Tool

Version:$Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $


[Status]Processing input data                 #正在读取数据

[Status]Sending queries (beginning with 10.0.10.60)    #发送查询请求

[Status]Testing complete  


Statistics:


 Parse input file:     once

 Ended due to:         reaching end of file


 Queries sent:         3 queries              #共发起了多少请求

 Queries completed:    3 queries              #完成了多少请求

 Queries lost:         0 queries              #丢失多少请求

 Queries delayed(?):   0 queries        


 RTT max:             0.006557sec             #将请求发出去响应回过来最大的一次耗时多少

 RTT min:              0.002860 sec           #最短一次

 RTT average:          0.004116 sec           #平均多久

 RTT std deviation:    0.001721 sec

 RTT out of range:     0 queries


 Percentage completed: 100.00%                #完成的比例

 Percentage lost:        0.00%                #丢失的比例


 Started at:           Wed Dec 18 20:29:43 2013

 Finished at:          Wed Dec 18 20:29:43 2013

 Ran for:              0.009473 seconds


 Queries per second:   316.689539 qps         #每秒钟平均能完成多少个请求

#之前测试的数量太少,接下来修改test.txt,将信息填满:

www.test.comA

test.comNS

10.0.10.60PTR

test.comMX

10.0.10.61PTR

10.0.10.60PTR

10.0.10.61PTR

10.0.10.60PTR

123.test.comA         #这个域名不存在

mail.test.comA

然后将如上行多复制几行,(不论怎么复制行都可以如下所示

[root@test~]# wc -l test.txt

3774840test.txt

再次进行压力测试

[root@test~]# queryperf -d test.txt -s 10.0.10.60

DNSQuery Performance Testing Tool

Version:$Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $


[Status]Processing input data

[Status]Sending queries (beginning with 10.0.10.60)

[Timeout]Query timed out: msg id 62

[Timeout]Query timed out: msg id 64

[Timeout]Query timed out: msg id 71

[Timeout]Query timed out: msg id 73

[Timeout]Query timed out: msg id 80

[Timeout]Query timed out: msg id 82

[Timeout]Query timed out: msg id 89

[Timeout]Query timed out: msg id 91

[Timeout]Query timed out: msg id 98

[Timeout]Query timed out: msg id 100

[Status]Testing complete


Statistics:


 Parse input file:     once

 Ended due to:         reaching end of file


 Queries sent:         2364 queries

 Queries completed:    2364 queries

 Queries lost:         0 queries

 Queries delayed(?):   0 queries


 RTT max:             0.347522sec

 RTT min:              0.000083 sec

 RTT average:          0.002009 sec

 RTT std deviation:    0.022389 sec

 RTT out of range:     0 queries


 Percentage completed: 100.00%

 Percentage lost:        0.00%


 Started at:           Wed Dec 18 20:40:35 2013

 Finished at:          Wed Dec 18 20:40:40 2013

 Ran for:              5.024620 seconds


 Queries per second:   470.483340 qps


#可以看到以下有很多包处于丢失状态

[Status]Processing input data

[Status]Sending queries (beginning with 10.0.10.60)

[Timeout]Query timed out: msg id 62

[Timeout]Query timed out: msg id 64

[Timeout]Query timed out: msg id 71

[Timeout]Query timed out: msg id 73

[Timeout]Query timed out: msg id 80

#----------略------------------

[Status]Testing complete

但是在本地测试不用考虑服务器端的带宽查看本地服务器负载情况

[root@test~]# uptime

20:51:07 up 2:27,  2 users,  load average: 2.20, 0.00, 0.00

发现利用率也不高使用vmstat查看实时负载情况可以看到阻塞队列正常,bi  bo量偶尔会有所以中断和上下文切换量也很小所以这些都不是问题可是响应速度依然非常的慢

[root@test~]# vmstat 1

procs-----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b   swpd   free  buff  cache   si  so    bi    bo  in   cs us sy id wa st

0 0      0  68720 53988 214796    0    0   26    15   25  23  0  0 96 3  0    

0 0      0  68712 53988 214800    0    0    0     0   18  20  0  0 100 0  0  

0 0      0  68712 53988 214800    0    0    0     0   19  13  0  0 100 0  0  

0 0      0  68712 53988 214800    0    0    0     0   15  14  0  1 99 0  0    

技术压力测试,切换到其它服务器对其进行压力测试

[root@test~]# queryperf -d test.txt -s 10.0.10.61

依旧如此有一堆的timeout

Warning:RTT is out of range: 29.990839 [query=10.0.10.61/12, rcode=2]

Warning:RTT is out of range: 24.962086 [query=10.0.10.61/12, rcode=2]

Warning:RTT is out of range: 24.962383 [query=10.0.10.61/12, rcode=2]

[Timeout]Query timed out: msg id 223

[Timeout]Query timed out: msg id 224

[Timeout]Query timed out: msg id 212

[Timeout]Query timed out: msg id 193

接下来在被测试的服务器上使用rndcstatus查看named服务器的运行状况

[root@test2~]# rndc status

version:9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6

CPUsfound: 1

workerthreads: 1

numberof zones: 21

debuglevel: 0

xfersrunning: 0

xfersdeferred: 0

soaqueries in progress: 0

querylogging is OFF                  #query log是关闭的

recursiveclients: 20/0/1000         #收到20个递归请求 tcp clien没有

tcpclients: 0/100

serveris up and running

怀疑是否是反向解析的问题,将test.txt包含反向解析的行全部使用sed删除

[root@test~]# sed -i '/^10/d' test.txt  

[root@test~]# queryperf -d test.txt -s 10.0.10.61


DNSQuery Performance Testing Tool

Version:$Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $


[Status]Processing input data

[Status]Sending queries (beginning with 10.0.10.61)

[Timeout]Query timed out: msg id 1

[Timeout]Query timed out: msg id 2

[Timeout]Query timed out: msg id 3

[Timeout]Query timed out: msg id 4

[Timeout]Query timed out: msg id 5

[Timeout]Query timed out: msg id 6

[Timeout]Query timed out: msg id 7

[Timeout]Query timed out: msg id 8

[Timeout]Query timed out: msg id 9


Statistics:


 Parse input file:     once

 Ended due to:         reaching end of file


 Queries sent:         4548 queries

 Queries completed:    4548 queries

 Queries lost:         0 queries

 Queries delayed(?):   0queries


 RTT max:             0.004176sec

 RTT min:              0.000126 sec

 RTT average:          0.001663 sec

 RTT std deviation:    0.000515 sec

 RTT out of range:     0 queries


 Percentage completed: 100.00%

 Percentage lost:        0.00%


 Started at:           Wed Dec 18 20:59:48 2013

 Finished at:          Wed Dec 18 20:59:48 2013

 Ran for:              0.405095 seconds


 Queries per second:   11226.996137 qps           #总共每秒可以承受11226个查询请求

进一步压力测试

可以看到,此服务器负载比刚才高出了一些

[root@test~]# wc -l test.txt

13633842test.txt

[root@test~]# queryperf -d test.txt -s 10.0.10.61

[root@test2~]# vmstat  1

procs-----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b   swpd   free  buff  cache   si  so    bi    bo  in   cs us sy id wa st

1 0      0 314332  12800 60260    0    0    2     0 7686   59 25 95 0  0  0    

1 0      0 314332  12800 60260    0    0    0     0 7731   36 30 89 1  0  0    

1 0      0 314332  12800 60260    0    0    0     0 7494   40 36 84 0  0  0

得出结果

DNSQuery Performance Testing Tool

Version:$Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $


[Status]Processing input data

[Status]Sending queries (beginning with 10.0.10.61)

[Status]Testing complete


Statistics:


 Parse input file:     once

 Ended due to:         reaching end of file


 Queries sent:         3774840 queries

 Queries completed:    3774840 queries

 Queries lost:         0 queries

 Queries delayed(?):   0 queries


 RTT max:             0.041022sec

 RTT min:              0.000037 sec

 RTT average:          0.001813 sec

 RTT std deviation:    0.000452 sec

 RTT out of range:     0 queries


 Percentage completed: 100.00%

 Percentage lost:        0.00%


 Started at:           Wed Dec 18 21:04:24 2013

 Finished at:          Wed Dec 18 21:10:16 2013

 Ran for:              351.908312 seconds


 Queries per second:   8726.771353 qps

感兴趣的童鞋,可以将查询日志打开,再次进行压力测试,这里就不做演示了,打开后可以通过iostat 来查看负载情况,每秒读写的数据量多少,很有可能在某个磁盘上不停的写入数据,所以正是因为io子系统比较慢

3.使用dnstop监视bind服务性能状态

使用dnstop来实现观测dns响应请求查询时候的性能

安装dnstop

[root@testdnstop-20121017]# wgethttp://dns.measurement-factory.com/tools/dnstop/src/dnstop-20121017.tar.gz

[root@testdnstop-20121017]# cd dnstop-20121017

[root@testdnstop-20121017]# ./configure

[root@testdnstop-20121017]# make &&  makeinstall

如何使用可以使用man来查看帮助文档 man dnstop 或参考 http://book.51cto.com/art/201108/281821.htm

开始抓包分析,对eth0接口的请求进行分析:

[root@testdnstop-20121017]# dnstop -4 -Q -R eth0

Queries:0 new, 0 total                    Wed Dec 18 21:59:57 2013

Replies:0 new, 0 total


Sources     Count     %   cum%

到10.0.10.61上对其做dig查询

[root@test2tools]# dig -t A www.test.com @10.0.10.60

[root@test2tools]# dig -t A www.test.com @10.0.10.60

再次查看60的监测状态

Queries:0 new, 2 total              

Wed Dec18 22:01:01 2013

Replies:0 new, 2 total


Sources        Count      %  cum%

------------------- ------ ------

10.0.10.61         2 100.0  100.0

可以键1-3对其对类型进行统计比如

com

test.com

www.test.com

总结:

(1)抓包时可以在61上对60进行压力测试观测效果);

(2)建议做压力测试的时候对目标主机做分布式压力测试,效果更佳;




本文转自zuzhou 51CTO博客,原文链接:http://blog.51cto.com/yijiu/1343257
相关文章
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
485 0
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
649 4
|
弹性计算 运维 安全
优化管理与服务:操作系统控制平台的订阅功能解析
本文介绍了如何通过操作系统控制平台提升系统效率,优化资源利用。首先,通过阿里云官方平台开通服务并安装SysOM组件,体验操作系统控制平台的功能。接着,详细讲解了订阅管理功能,包括创建订阅、查看和管理ECS实例的私有YUM仓库权限。订阅私有YUM仓库能够集中管理软件包版本、提升安全性,并提供灵活的配置选项。最后总结指出,使用阿里云的订阅和私有YUM仓库功能,可以提高系统可靠性和运维效率,确保业务顺畅运行。
|
机器学习/深度学习 自然语言处理 API
阿里云零门槛、轻松部署您的专属 DeepSeek模型体验测试
DeepSeek R1是基于Transformer架构的先进大规模深度学习模型,2025年1月20日发布并开源,遵循MIT License。它在自然语言处理等任务上表现出色,高效提取特征,缩短训练时间。阿里云推出的满血版方案解决了服务器压力问题,提供100万免费token,云端部署降低成本,用户可快速启动体验。虽然回答速度有待提升,但整体表现优异,备受关注。
633 8
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
1418 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
搜索推荐 测试技术 API
探秘电商API:从测试到应用的深度解析与实战指南
电商API是电子商务背后的隐形引擎,支撑着从商品搜索、购物车更新到支付处理等各个环节的顺畅运行。它通过定义良好的接口,实现不同系统间的数据交互与功能集成,确保订单、库存和物流等信息的实时同步。RESTful、GraphQL和WebSocket等类型的API各自适用于不同的应用场景,满足多样化的需求。在测试方面,使用Postman、SoapUI和jMeter等工具进行全面的功能、性能和安全测试,确保API的稳定性和可靠性。未来,随着人工智能、大数据和物联网技术的发展,电商API将进一步智能化和标准化,为用户提供更个性化的购物体验,并推动电商行业的持续创新与进步。
897 5
|
Dubbo 应用服务中间件 API
使用 Apifox、Postman 测试 Dubbo 服务,Apache Dubbo OpenAPI 即将发布
Apache Dubbo 3.3.3(即将发布)实现了与 OpenAPI 的深度集成,通过与 OpenAPI 的深度集成,用户能够体验到从文档生成到接口调试、测试和优化的全流程自动化支持。不论是减少手动工作量、提升开发效率,还是支持多语言和多环境,Dubbo 3.3.3 都展现了其对开发者体验的极大关注。结合强大的 Mock 数据生成和自动化测试能力,这一版本为开发者提供了极具竞争力的服务治理解决方案。如果你正在寻找高效、易用的微服务框架,Dubbo 3.3.3 将是你不容错过的选择。
1666 267
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
561 10

相关产品

  • 云解析DNS
  • 推荐镜像

    更多