本文介绍了几个比较典型的服务器评测软件,无论什么评测工具,基本的技术都是利用线程技术模仿和虚拟用户,在这里主要的难点在于测试脚本的编写,每种工具使用的脚本都不一样,但是大多数工具都提供录制功能就算是不会编码的测试人员同样可以测试。众所周知,服务器是整个网络系统和计算平台的核心,许多重要的数据都保存在服务器上,很多网络服务都在服务器上运行,因此服务器性能的好坏决定了整个应用系统的性能。现在市面上不同品牌、不同种类的服务器有很多种,用户在选购时,仅仅从配置上判别是不够的,最好能够通过实际测试来筛选,下面就介绍一些较典型的测试工具:
(一)服务器整机系统性能测试工具
一台服务器系统的性能可以按照处理器、内存、存储、网络几部分来划分,而针对不同的应用,可能会对某些部分的性能要求高一些。
Iometer(www.iometer.org):存储子系统读写性能测试
Iometer是Windows系统下对存储子系统的读写性能进行测试的软件。可以显示磁盘系统的最大IO能力、磁盘系统的最大吞吐量、CPU使用率、错误信息等。用户可以通过设置不同的测试的参数,有存取类型(如sequential ,random)、读写块大小(如64K、256K),队列深度等,来模拟实际应用的读写环境进行测试。Iometer操作简单,可以录制测试脚本,可以准确有效的反映存储系统的读写性能,为各大服务器和存储厂商所广泛采用。
Sisoft Sandra(www.sisoftware.co.uk):WINDOWS下基准评测
SiSoft发行的Sandra系列测试软件是Windows系统下的基准评测软件。此软件有超过三十种以上的测试项目,能够查看系统所有配件的信息,而且能够对部分配件(如CPU、内存、硬盘等)进行打分(benchmark),并且可以与其它型号硬件的得分进行对比。另外,该软件还有系统稳定性综合测试、性能调整向导等附加功能。Sisoft Sandra软件在最近发布的Intel bensley平台上测试的内存带宽性能并不理想,不知道采用该软件测试的FBD内存性能是否还有参考价值,或许软件应该针对FBD内存带宽的测试项目做一个升级。
Iozone(www.iozone.org):linux下I/O性能测试
现在有很多的服务器系统都是采用linux操作系统,在linux平台下测试I/O性能可以采用iozone。 iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。可以测试Read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread ,mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。测试所有这些方面,生成excel文件,另外, iozone还附带了用gnuplot画图的脚本。该软件用在大规模机群系统上测试NFS的性能,更加具有说服力。
Netperf(www.netperf.org):网络性能测试
Netperf可以测试服务器网络性能,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是 netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。对于服务器系统来说,网络性能显得尤其重要,有些服务器上为了节省成本,采用了桌面级的网络芯片,性能怎样,用这个软件一测便知了。以上介绍的这几款测试工具都是可以免费从网上下载的非商业软件,但是其测试结果和认可程度均是为大多数使用者所认同的。你可以根据自己的应用需求选择不同的软件进行测试。
(二)针对应用的测试工具
随着web应用的增多,服务器应用解决方案中以Web为核心的应用也越来越多,很多公司各种应用的架构都以web应用为主。一般的web测试和以往的应用程序的测试的侧重点不完全相同,在基本功能已经通过测试后,就要进行重要的系统性能测试了。系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括执行效率、资源占用率、稳定性、安全性、兼容性、可靠性等等,以下重点从负载压力方面来介绍服务器系统性能的测试。系统的负载和压力需要采用负载测试工具进行,虚拟一定数量的用户来测试系统的表现,看是否满足预期的设计指标要求。负载测试的目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等如何决定系统的性能,例如稳定性和响应等。负载测试一般使用工具完成,有 LoadRunner,Webload,QALoad等,主要的内容都是编写出测试脚本,脚本中一般包括用户常用的功能,然后运行,得出报告。使用压力测试工具对web服务器进行压力测试。测试可以帮助找到一些大型的问题,如死机、崩损、内存泄漏等,因为有些存在内存泄漏问题的程序,在运行一两次时可能不会出现问题,但是如果运行了成千上万次,内存泄漏得越来越多,就会导致系统崩滑。
Loadrunner:预测系统行为和性能的负载测试工具
目前,业界中有不少能够做性能和压力测试的工具,Mercury(美科利)Interactive公司的LoadRunner是其中的佼佼者,也已经成为了行业的规范,目前最新的版本8.1。LoadRunner 是一种预测系统行为和性能的负载测试工具,通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试,LoadRunner 适用于各种体系架构,能支持广范的协议和技术(如Web、Ftp、Database等),能预测系统行为并优化系统性能。它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。Loadrunner是一个强大有力的压力测试工具,它的脚本可以录制生成,自动关联。
欢迎进入软件测试社区论坛,与200万技术人员互动交流 >>进入
测试场景面向指标,实现了多方监控。而且测试结果采用图表显示,可以自由拆分组合。通过Loadrunner的测试结果图表对比,你可以寻找出系统瓶颈的原因,一般来说可以按照服务器硬件、网络、应用程序、操作系统、中间件的顺序进行分析。
Webload:WEB性能压力测试
webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作, 生成压力负载来测试web的性能。用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量 web应用程序在真实环境下的性能。当前最高版本是6.0。webload提供巡航控制器cruise control的功能,利用巡航控制器,可以预定义web应用程序应该满足的性能指标,然后测试系统是否满足这些需求指标;cruise control能够自动把负载加到web应用程序,并将在此负荷下能够访问程序的客户数量生成报告。webload能够在测试会话执行期间对监测的系统性能生成实时的报告,这些测试结果通过一个易读的图形界面显示出来,并可以导出到excel和其他文件里。这两个软件的功能虽然强大,并且可以自动生成测试报告,但其终究是一个工具,如果你想真正的定位服务器性能的好坏和性能的瓶颈所在,需要使用工具的人对于测试软件的方方面面都要有了解,比如软件体系构架,网络拓扑,服务器硬件等知识。
使用webbench对网站进行压力测试
网站压力测试较为常用的是Apache自带的ab工具,今天向大家介绍Linux下另外一款能模拟30000并发来进行压力测试的工具——webbench.
//编译安装webbench
wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install
./webbench -c 2000 -t 60 http://www.9linux.com
//其中-c表示并发数,-t表示时间
./webbench -c 2000 -t 60 http://www.9linux.com/
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://www.9linux.com/
2000 clients, running 60 sec.
Speed=16190 pages/min, 288900 bytes/sec.
Requests: 14267 susceed, 1923 failed.
由上可知在2000并发数下,服务器正常能响应的请求为14267个,失败的请求为1923个。而与此同时我用Fireofx打开网站时已经出现如下信息:
CGIWrap Error: Real UID could not be changed!
Real UID could not be changed!
Server Data:
Server Administrator/Contact: [email protected]
Server Name: www.9linux.com
Server Port: 80
Server Protocol: HTTP/1.1
Request Data:
User Agent/Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Request Method: GET
Remote Address: 125.77.142.90
Remote Port: 64171
服务器已经不堪重负,直接报错了。最后经过前后参数调整,能正常请求不丢包的并发为1500个。本工具本质为压力测试软件,但也经常有人用来进行攻击,消耗服务器带宽和资源。简单的Dos,可以在nginx或apache中开启每IP并发限制。
Linux流量测试工具Iperf
由于要测试另一个IDC给的带宽是否给足了,所以要从一个机房打10G的流量到测试IDC。之初 采用多线程下载工具,多进程方法下载,可是不理想,跑量达不到要求。
Iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告 带宽,延迟抖动和数据包丢失.
费话不多说。先介绍下安装吧
如果是centos 的话。添加第三方的源(rpmforge)就可以直接yum
yum -y install iperf
当然也可以用源码包编 译安装 。官方站:http://sourceforge.net/projects/iperf/
tar xvf iperf-xxx.tar
cd iperf
./configure
make
make install
下面介绍一个简单用法:
iperf 是一个server 和client 的 组成的工作方式
如,我要测试 B地,测试 A地出的流量 ,刚配置方法如下
A地要配置成client
B地配置为server
server:
iperf -s -p 8080 -d
client:
iperf -c serverIP -p 8080 -P 30 -t 300
对上面几个参数做简单说明
-s 表示是server -p 8080 监听8080 -d 表示以daemon方式运行
-c 以client 方式运行 -P 表示开启的线程数 -t 表示持续的时间(单位为s)
另外一款监控mysql数据库的
cacti