网站运维技术与实践之测试评估

 在一个网站应用系统的完整生命周期中,上线之前还有漫长的开发和测试阶段。作为系统未来的管理者和负责人,运维人员有必要在这个阶段就参与进来,根据业务的预期,完成系统层面的容量和压力测试,根据测试数据做出切实的运维规划,包括采购清单、结构设计、预警阈值和应急预案等。

可以说,监控,是防止“千里之堤,溃于蚁穴”;测试,是“万丈高楼第一层”。

一、服务器性能测试

和监控一样,测试工作也分为服务器和应用两大部分。可以说,所有监控需要关心的数据,都对应地需要提前进行测试,这里不再举例。下面介绍一些常用的测试工具,功能也许会有重叠,但都会有自己侧重的有特色的地方。掌握好工具最锋利的部分,灵活运用,就可以构建出最适合自己的测试工具箱了。

1.IOzone

文件读写性能包括两个层面,一方面是纯粹的磁盘读写能力。这方面本书之前章节已有介绍,我们可以通过硬件设备的数据进行估算;另一方面是文件系统的读写能力。在这方面,各种文件系统的实现细节毫厘千里,一般运维人员很难也没有必要花费大量时间来逐一研读代码。通过尽可能贴近场景的模拟测试,来获取足以支持选择某个文件系统理由的数据,成为最方便快捷的办法。

IOzone可以使用系统调用,通过模拟在文件系统层面的各种读写操作,来统计系统的文件I/O性能。比较贴心的是,IOzone还能自动把测试结果通过gnuplot绘制成三维图形,使得使用者可以更直观地了解I/O情况。IOzone官网地址:upload/201811121537391120.png" alt="" style="margin: 0px; padding: 0px; border: 0px; max-width: 660px; height: auto;" />

 

 (2)文件I/O性能测试

前面说到过IOzone测试文件I/O。其实sysbench测试的要点大同小异,只是测试的I/O类型没有那么多。sysbench支持的I/O测试类型包括:seqwr(顺序写)、seqrewri(顺序重写)、seqrd(顺序读)、rndrd(随机读)、rndwr(随机写)和rndrw(随机读写)等六种。

此外,在随机读写测试模式下,还可以指定读写操作和写操作的百分比。测试需要先预设好指定大小文件。

 

(3)内存测试

内存测试中也可以指定顺序或者随机读写模式,不过这里最重要的是,指定的内存传输大小不能超过设备的实际内存大小!默认值为100GB,显然是大于一般设备的内存总量的。

 

(4)数据库测试

sysbench中的oltp测试支持MySQL、Oracle和PostgreSQL三种数据库,都需要在编译的时候指定库文件,然后在测试时通过"--db-driver"参数指定。如果编译的时候只支持一种数据库,那么可以忽略这个参数。

otp测试参数分为两部分:一部分是oltp相关参数,用于规划最终形成的数据库测试表的数据。最简单的就是表的大小,这个默认值是10000条记录。另一部分是db-driver相关参数,用来完成数据库连接,比如IP地址和端口、用户名密码,数据库是MySQL的话还有特有的存储引擎设定。MySQL数据库性能基准测试工具还有很多,比如MySQL自带的mysqlslap和Perl编写的MyBench、Super-Smack等。Sysbench自动支持了事务处理测试,还是比较方便的。

 

 

二、应用性能测试

网站应用除了数据库之外,另一个重要部分就是HTTP服务。尤其是大规模扩展的情况下,应用组件之间也大多采用HTTP接口相互调用,HTTP服务性能测试就更加重要。这里介绍三个各有优势的HTTP性能测试工具。

1.http_load

http_load是一个极为简单的小工具,它只利用单核单进程完成测试,可以很放心地在服务器上使用。使用方面,在总结过运维最常见的需求后,http_load只提供两对测试参数来随机测试一组URL列表。在一些需要快速定位的场合中,非常实用。

官网地址:http://www.acme.com/software/http_load/

使用详解:https://www.cnblogs.com/shijingjing07/p/6539179.html

2.AB(ApacheBench)

AB是Apache httpd项目自带的测试工具。也是大多数运维人员最熟悉和最早接触的HTTP服务性能测试工具。

AB对HTTP协议的支持比较全面,包括HEAD、GET、POST和PUT四种请求方式,以及自定义TCP收发缓冲的大小,自定义RequestHeader和Cookie,支持KeepAlive特性、HTTPS协议和WWW-Authentication认证等。不过AB只支持单个URL和并发请求/总请求数的测试模式(相对于http_load的-p/-f模式)。

AB的安装和使用参考:https://www.cnblogs.com/Ryana/p/6279232.html

AB的使用详解:https://www.cnblogs.com/xiaoyaowuming/p/5622660.html

 

3.weighttp

weighttp和AB类似,它是另一款著名开源HTTP服务器Lighttpd项目下的性能测试工具。官网地址:http://redmine.lighttpd.net/projects/weighttp/wiki

weighttp目前的测试模式将很少。但作为年龄比较小的项目,weighttp也有自己的特点-它底层使用libev库。libev是一个性能比著名的libevent还要好一些的网络事件驱动库。所以weighttp本身的性能也很不错。

安装和使用:https://blog.csdn.net/yang382197207/article/details/19190089?locationNum=2&fps=1

 

三、分布式测试环境

1.AutoBench

AutoBench是一个用Perl编写的基于Httperf开发的分布式测试系统。代码量不大,使用也很简单,我们可以从这个系统中学习如何构建一个分布式测试环境。

官网地址:http://www.xenoclast.org/autobench/

AutoBench安装和使用:https://www.cnblogs.com/Ryana/p/6279232.html

 

2.TCPCopy

TCPCopy的用途很广,常见的应用场景如下:

(1)分布式压力测试:利用在线数据,可以测试系统能够承受的压力大小,也可以提前发现一些bug。

(2)上线测试:可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题。

(3)对比测试:针对不同程序或相同程序的不同版本,使用相同的流量请求做性能对比。

(4)流量放大:可以利用多种手段构造无限在线压力,满足压力测试要求。

(5)利用TCPCopy转发传统压力测试工具发出的请求,可以增加网络延迟,使其压力测试更加真实。

(6)热备份

代码托管地址:https://github.com/wangbin579/tcpcopy

TCPCopy安装和使用:https://www.cnblogs.com/phennry/p/6382755.html?utm_source=itdadao&utm_medium=referralhttps://www.cnblogs.com/youcong/p/9942188.html

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信