服务器性能测试典型工具介绍
众所周知,服务器是整个网络系统和计算平台的核心,许多重要的数据都保存在服务器上,很多网络服务都在服务器上运行,因此服务器性能的好坏决定了整个应用系统的性能。
现在市面上不同品牌、不同种类的服务器有很多种,用户在选购时,怎样从纷繁的型号中选择出所需要的,适合于自己应用的服务器产品,仅仅从配置上判别是不够的,能够通过实际测试来筛选。而各种的评测软件有很多种,你应该选择哪个软件测试?下面就介绍一些较典型的测试工具:
(一)服务器整机系统性能测试工具
一台服务器系统的性能可以按照处理器、内存、存储、网络几部分来划分,而针对不同的应用,可能会对某些部分的性能要求高一些。
Iometer(wwwiometerorg):存储子系统读写性能测试
Iometer是Windows系统下对存储子系统的读写性能进行测试的软件。可以显示磁盘系统的IO能力、磁盘系统的吞吐量、CPU使用率、错误信息等。用户可以通过设置不同的测试的参数,有存取类型(如sequential ,random)、读写块大小(如64K、256K),队列深度等,来模拟实际应用的读写环境进行测试。
Iometer作简单,可以录制测试脚本,可以准确有效的反映存储系统的读写性能,为各大服务器和存储厂商所广泛采用。
Sisoft Sandra(wwwsisoftwarecouk):WINDOWS下基准评测
SiSoft发行的Sandra系列测试软件是Windows系统下的基准评测软件。此软件有超过三十种以上的测试项目,能够查看系统所有配件的信息,而且能够对部分配件(如CPU、内存、硬盘等)进行打分(benchmark),并且可以与其它型号硬件的得分进行对比。另外,该软件还有系统稳定性综合测试、性能调整向导等附加功能。
Sisoft Sandra软件在最近发布的Intel bensley平台上测试的内存带宽性能并不理想,不知道采用该软件测试的FBD内存性能是否还有参考价值,或许软件应该针对FBD内存带宽的测试项目做一个升级。
Iozone(wwwiozoneorg):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(wwwnetperforg):网络性能测试
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是其中的佼佼者,也已经成为了行业的规范,目前最新的版本81。
LoadRunner 是一种预测系统行为和性能的负载测试工具,通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试,LoadRunner 适用于各种体系架构,能支持广范的协议和技术(如Web、Ftp、Database等),能预测系统行为并优化系统性能。它通过模拟实际用户的作行为和实行实时性能监测,来帮助您更快的查找和发现问题。Loadrunner是一个强大有力的压力测试工具,它的脚本可以录制生成,自动关联。测试场景面向指标,实现了多方监控。而且测试结果采用图表显示,可以自由拆分组合。
通过Loadrunner的测试结果图表对比,你可以寻找出系统瓶颈的原因,一般来说可以按照服务器硬件、网络、应用程序、作系统、中间件的顺序进行分析。
Loadrunner是一款收费软件,根据测试项目和虚拟用户数目的不同而花费不同的费用。不过你可以下载到免费使用10天的测试版本。
Webload:WEB性能压力测试
webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试; webload通过模拟真实用户的作,生成压力负载来测试web的性能。
用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。当前版本是60。webload提供巡航控制器cruise control的功能,利用巡航控制器,可以预定义web应用程序应该满足的性能指标,然后测试系统是否满足这些需求指标; cruise control能够自动把负载加到web应用程序,并将在此负荷下能够访问程序的客户数量生成报告。
webload能够在测试会话执行期间对监测的系统性能生成实时的报告,这些测试结果通过一个易读的图形界面显示出来,并可以导出到excel和其他文件里。
这两个软件的功能虽然强大,并且可以自动生成测试报告,但其终究是一个工具,如果你想真正的定位服务器性能的好坏和性能的瓶颈所在,需要使用工具的人对于测试软件的方方面面都要有了解,比如软件体系构架,网络拓扑,服务器硬件等知识。
服务器的压测能力是由多个因素决定的,而8+16的服务器的压测能力则主要取决于其CPU、内存、磁盘等硬件配置以及网络带宽等因素。
首先,8+16的服务器通过其CPU的处理能力,可以同时处理多个请求,从而提高服务器的响应速度和性能。其次,内存的大小也会影响服务器的压测能力,内存越大,服务器同时处理请求的能力也就越强。此外,磁盘的速度和容量也会影响服务器的压测能力,磁盘速度快,磁盘容量大,服务器能够处理更多的请求。最后,网络带宽也会影响服务器的压测能力,带宽越大,服务器处理请求的速度也就越快。
因此,8+16的服务器可以根据其硬件配置和网络带宽的不同,承受的压测量也会有所差异。一般来说,如果服务器的硬件配置足够强大,网络带宽也足够宽敞,那么8+16的服务器可以承受数万个请求的压测。但如果硬件配置较低或者网络带宽较窄,那么服务器的压测能力也会有所下降。因此,在进行服务器压测之前,需要综合考虑多个因素,才能准确评估服务器的压测能力。
对于游戏后台性能,评测标准不只单单是TPS(每秒处理多少个XX请求),因为当你的游戏服务器上线后,不存在一群玩家只发XX请求的压力场景。所以,游戏后台受到的现网请求压力永远是多场景混合的,在这样的压力下,后台能支撑多少人同时在线,才是一个游戏压测者需要得到的有价值的测试结论。
要得到可支撑的"最大同时在线人数",主要做好2件事:
1、设计你的类现网压力模型
在现网真实压力里,不论压力大小如何变化,现网环境如何变化,一个游戏类型和玩法设计定型后,永远有2个压力宏观数据保持不变:a 各接口的压力比例不变, b玩家平均每分钟操作频率不变。因此,压力测试目标就转变成了如何模拟符合ab数据的压力。
对于a,首先从同类型游戏或者本游戏内测阶段,日志插桩,收集各个接口的调用比例;然后,将接口比例转化为场景比例,如同时会有个2%完结登陆、15%玩家战斗、20%玩家拉取好友列表、10%玩家赌博(一个手游场景例子)。
对于b,同样在内测阶段收集玩家平均操作频率。
此时有了a和b,就可以构造出一分钟内玩家同时在线的真实压力模型了。
2、用压测工具构造出符合压力模型的压力
这个可以自己写,也可以使用现成的压测工具。现在市面上的压测工具很多,但很多都是专注于TPS这个参数,不符合游戏行业压测的关注点,同时在线人数。
不想被设备供应商牵着鼻子走的信息主管,在购买服务器前需从自身角度出发,通盘考虑业务、技术、投资成本、节能环保等各方面因素,确定最合适的需求。 服务器选购不当会带来很多
尴尬:
――服务器用了一段时间后需要增加网络接口,却发现插槽数量不够;
――CPU急需扩容时被告之早期的型号已经停产,买原来型号的CPU比新购一台设备还贵;
――服务器电源风扇这样的“配角”失灵,没有冗余备份造成宕机。
所有这些,都是信息主管最头疼、最不愿意遇到的事情。服务器是搭建企业应用系统硬件平台的核心设备,它必须在安全性、可靠性、灵活性、可扩展性等方面都具有优势,但更高的要求预示着更高的服务器采购成本。如何能够选择适合企业需要的服务器,更好地保护企业投资?信息主管需从业务、技术、投资成本、节能环保等角度综合考虑。
第一技
需求越细越好
服务器按运行的软件和承担的功能不同可以分为数据库服务器、应用服务器、网管服务器、邮件服务器、文件服务器、DNS服务器、计费认证服务器等。采购方可以根据应用软件用户数、数据量、处理能力的要求,将多个功能部署在同一台服务器上,或者将同一个功能按照特定规则(如: 不同模块、不同的用户群等等)分别部署在多台服务器上。对一个特定用户而言,不同应用系统的重要性不尽相同,系统越重要,对其硬件平台的稳定性、可用性要求也就越高。
如果单位已经部署了应用系统,在服务器扩容前应对现有系统进行评估,可以用资源监视程序或管理软件监控一段时间,记录系统资源消耗的峰谷情况,再结合拟新增加的应用和对系统今后一定时期负荷的增长预测,确定是通过扩容还是新购机器来实现。
一般按处理能力和市场定位将服务器由低到高分为入门级、工作组级、部门级、企业级等几个级别。采购方应根据应用系统处理能力需求来选择不同级别的服务器以及服务器具体性能指标。
第二技
服务器需“开膛”选
服务器的选购,并不仅仅是确定一个品牌、一个型号这么简单,要综合考虑服务器的组成部件性能。
CPU和内存
CPU作为计算机系统的核心,其主频、缓存、数量、技术先进性决定了服务器的运算能力,这些指标的提高,会增强系统性能,但并非线性提升,具体要参考一些测试指标以及实际应用的情况。Unix服务器中,CPU能否支持混插、热拔插将直接影响系统的可用性。扩大内存能够减少系统读取外部存储,提升系统处理性能。实践中需要根据不同的应用系统选择CPU与内存的配比,对耗用内存比较大的应用软件和数据库,需要配置更大的内存。
一些中高端Unix服务器中,厂商将CPU槽和内存槽位按一定比例组合集成在一个处理板上,安装CPU和内存的处理板作为一个整体,能够支持热拔插,从而提高了系统扩容升级和维护的方便性、灵活性。
对于中高端小型机,部分型号可以支持分区技术,能通过软硬件配合将系统划分为多个独立的服务器,用于部署不同的应用,IBM逻辑分区甚至能将一个物理CPU分成多个逻辑CPU。
硬盘
服务器内置硬盘用于安装和存放系统软件、应用程序以及部分数据,可以选择支持内置硬盘较多的服务器来存储数据或者作为文件服务器,不够存储的部分再通过购买磁盘阵列解决。硬盘的主要技术指标包括容量、转数及支持的技术。为提高磁盘系统稳定和可靠性,厂商一般会通过RAID技术来增加磁盘容错能力。服务器支持的硬盘主要有SCSI、SAS、SATA等, SATA支持的硬盘容量大,但硬盘转速低,性能不及SCSI和SAS盘; SAS和SCSI的稳定性和转速高,但容量相对小一些。
I/0扩展
服务器一般都会集成一定的网络接口、管理口、串口、鼠标键盘接口等,能满足一些基本的应用。但实际应用中可能需要更多外设连接,采购方就需要通过扩展槽增加适配卡来实现。如增加冗余网络接口卡(或增加光纤网卡)、磁盘阵列卡、远程管理卡、显卡、串口卡等等,这些适配卡的选择因网络连接方式、双机、存储系统连接方式、管理需要等需求不同而有所区别。
电源和风扇
对于一些扩容能力较高的服务器,增加一定数量的组件后系统功耗增加,采用多个电源的方式提高了系统的灵活性。另外,电源是有源电子部件,往往还内嵌有风扇这样的“易损件”,它的故障几率也是很高的,加之一些关键业务系统需要双路供电,所以常常采用冗余设计方式来提高系统的可靠性和可用性。
操作系统
各厂商PC服务器对于Windows系统都能够很好支持; 对于Linux系统,服务器厂商会对主流Linux品牌主要版本进行测试并公布支持性,未经测试的品牌及版本需要用户通过其他渠道确认(如Linux系统供应商的成功案例),一般主要涉及驱动程序和补丁包。
Unix服务器的情况比较复杂,主流Unix服务器都绑定自己的Unix系统,厂商之间的软硬件不能交叉安装,所以选择一个品牌的服务器,也就选定了操作系统,如基于SUN SPARC CPU的服务器安装Solaris,IBM Unix服务器安装AIX,HP Unix服务器安装UX。其中IBM P5/P6系列服务器现已支持SUSE Linux和Redhat Linux,基于安腾芯片的HP Integrity服务器能支持Windows和Redhat Linux。
第三技
测试服务器性能
在确定了服务器所要承担的应用之后,采购方应确定采用什么档次和配置的服务器。
如果已经部署了应用,仅仅为了扩容,或者所部署的应用在其他地方有成功案例,则可以结合应用的规模和技术要求进行对比分析,确定新购服务器的档次和配置。例如: 一个10万用户的计费系统使用1台A服务器,服务器CPU、内存等资源利用率正好不超过设计的限额,在相同业务逻辑情况下,现在需要实现一个能够支持20万用户的计费系统,则新购机器处理能力必须达到现在的两倍,那么,我们可以采用两台同样配置的服务器或者采用配置高于以前两倍的服务器。
对于一些定制或者新开发的应用系统,服务器选择就需要借助一些基准测试指标。就是服务器的工业标准基准测试,如TPC、SPEC、SAP SD、Linpack和HPCC等。这些基准测试,可以从处理器性能、服务器系统性能、商业应用性能直到高性能计算机性能等方面,给出一个量化的评价指标供用户选择。这些测试采用不同的模型和测试方法,关注的重点也有区别,所以,选做参照时一定要结合自己的应用需求。针对企业应用常用的参照指标有TPC和SPEC的测试结果。
TPC-C是事务处理性能测试委员会(TPC)设计的一种测试计算机处理能力的基准测试。它是基于联机事务处理模型,测试结果以系统每分钟能够处理的订单或交易量来表示,也就是tpmC。TPC-C能够对服务器的CPU、内存、I/O等各部分综合性能全面考察,所以常用于服务器整体性能的评价,特别是用做数据库服务器选择的参照。TPC-C的指标及所对应的软硬件平台都可以从www省略 网站查询。
SPECjbb(Java业务基准)是SPEC的一个用于评估服务器端Java的性能的基准,为Java用户提供用于评测服务器系统运行Java应用程序能力的最客观、最具代表性的基准。在为基于Java的应用系统选择服务器时,用SPECjbb值是一个很好的参照。SPECjbb测试不涉及I/O。SPECjbb指标及所反应的软硬件环境可以从www省略网站查询。
因为多方面的原因,各厂商不会对每个型号的设备都进行基准测试,所以经常会采用和已测机器相近的型号和配置的机器来估测其他机器的测试指标, IBM的P系列还提供了RPerf相对性能值来计算TPCC值。
在实际工作中,如果有条件,建议联系软硬件供应商能够搭建一个仿真的测试环境,或找到类似的应用案例,将会使选型更迅速和有效。
第四技
合理预留服务器
升级扩容能力
在做系统设计或者设备选型时,有时很难准确估算软件系统负荷,所以都会预留一定的余量或者扩容能力。供应商也会尽量推荐性能更高、扩容能力更强的机器。但从经济性、实用性角度来看,并非预留扩容能力越高越好。
就CPU而言,对于不支持CPU混插的PC服务器和低端小型机,鉴于CPU更新换代频繁,等到需要扩容的时候,也许已经停产无从购买; 如果能买到,以备件的方式,价格一般也会很贵,笔者就遇到过服务器扩容4CPU成本高于购买4CPU新机器价格的案例。所以建议选择一个合适的型号,CPU尽量一步到位。举例来说,如果觉得一颗CPU可能满足不了要求,那就一次性购买配有两颗CPU的服务器; 反之,如果觉得一颗CPU肯定能够满足目前的需要,那么建议直接购买支持一颗CPU的服务器。如果将来服务器不堪系统负荷,可以采用购买一台新的机器运用负载均衡技术扩容系统处理能力; 或者购买更高性能的服务器,而将该服务器用来安装其力所能担的应用系统。对于支持CPU混插的中高端小型机,那就根据对将来业务发展的估计和经费预算,预留大一些的扩容能力。
对于内存,由于槽位限制,为了预留扩容能力,建议尽量选用容量更大的内存条。一般单条容量大的内存,折合到单位容量的价格也高。
对于数据量不大的中小企业,往往采用服务器硬盘而不是盘阵存储数据,在这种情况下需要选择支持硬盘数量和容量比较大的服务器,并根据数据模型估算硬盘扩容余地,还需配置RAID卡。
第五技
应用软件与服务器兼容是关键
对于新增加的应用系统,需要评估应用软件与硬件平台及操作系统能否兼容; 在对现有系统升级扩容时,如果打算更换服务器平台,就必须考虑应用软件迁移移植成本。
在一种操作系统平台上开发运行的应用软件,更换一种新的操作系统平台,需要对现有代码进行重新编译、测试。如果应用软件与操作系统关联度比较大,可能面临修改软件甚至重新开发的情况,对于一些大型软件,将是一项复杂的任务。
第六技
别忽视与机器级别和CPU数量相关的软件成本
采购方在选择服务器时,常常希望购买高配置、高级别的设备,以便提高系统的性能、预留将来的扩容能力。然而,按照软件供应商的商务规则,包括数据库、双机软件、中间件软件、开发软件等等在内的许多软件的价格,要求与服务器CPU数量(有些软件按CPU核数量)或服务器档次直接挂钩,更多CPU、更高的机器档次,将会支出更高的软件费用,有时服务器增加一个CPU,所增加的软件成本将超过硬件增加的数倍。
所以,在满足适当扩容需求的前提下,可以通过选择更高性能的处理器来降低CPU数量和机器级别,合理降低软件系统的投资。
第七技
合理订购服务及续保
服务不仅影响设备的采购成本和未来的运行维护成本,还会影响到服务器上应用系统的业务可靠性。
服务器出厂一般都带有基本服务,如一年或者三年的返修和5天×8小时电话支持。用户可以根据自身需要,购买更高级别的服务,不同厂商对服务级别定义不大一样,有的厂商分为5天×8小时服务,7天×24小时服务,有的厂商定义为金、银、铜,不同级别的服务享有不同的响应速度、备件返修速度、返修时限以及现场支持、电话热线支持、软件升级级别。对于Unix服务器,硬件和软件服务购买的年限和级别不一定相同。在服务器选择时,需要根据自身需要购买相应服务,同时需要让供应商提供设备服务的详细说明。另外,一般购买的服务都是以设备出厂日期计算(考虑到设备运输和渠道因素,有些厂商有一定的后延,如3个月),这些因素都会影响到设备的拥有成本。
随着近年来IT系统的快速发展,各企业都采购了大量的服务器设备,而这些设备自带或购买的服务已经到期,如果需要继续接受原厂或者渠道的保修和技术支持,需要为这些设备续买服务,类似于给设备买保险。设备的续保费用与设备的型号、设备的详细配置、服务级别、原厂服务还是代理提供服务等因素相关,如果设备在购买合同签订时已经超出保修期,部分厂商还要收取设备检测费。原厂和代理通过设备序列号确认该设备的保修期。对于一些停产时间过长的设备,会出现不能继续购买服务的情况。
第八技
重视节能及环保
对于一台7天×24小时运行的服务器,如果能耗差100瓦,一年下来电耗差为876度。对于一个有10台机器的机房,每年将增加电耗8760度。每年几千块钱对于一个企业也许算不上什么,但对于能源紧缺的中国,数十万、数百万的设备,如果都能把电节省下来,长此下去,其经济价值和社会意义也不可小觑。
随着人们健康意识和环保意识的增强,环保标准RoHS规范遵从将作为人们选择电子产品的一个重要因素。RoHS是实现电子电气类产品中有毒有害物质的控制(禁止使用和减量化)的法律规范性文件。服务器在IT系统中被大量部署,如果不能很好地控制有毒有害物质,将对IT系统管理维护人员以及我们生活的环境造成损害。符合该规范的要求,将成为企业服务器选型的基本标准。(作者系亚信科技资深工程师)
链接
选择Unix小型机还是PC服务器
Unix小型机与PC服务器本质的差别是处理器,Unix小型机的CPU一般采用精简指令集计算机(RISC)技术,如SUN的SPARC系列CPU,IBM的Power系列CPU,HP的PA系列CPU等,而PC服务器的CPU是基于复杂指令计算机(CISC)技术,如Intel的处理器和AMD的处理器。
基于RISC架构的服务器采用精简指令系统,与Unix搭档,能有效提高系统处理能力和效率,加之各厂商一贯将其定位于中高端应用,在硬件设计上对可靠性、扩容能力、灵活性、管理方便性方面进行优化,所以它适用于对大型数据库系统、大型计算系统、大型应用软件和稳定性可靠性要求非常高的关键业务系统,如银行证券的交易结算系统,电信计费账务系统,大型企业的ERP系统等等。但其代价是相对昂贵的成本支出。
基于CISC架构的PC服务器,因为采用复杂指令系统,所以其处理效率和稳定性弱于Unix小型机。在安装微软的Windows操作系统时,虽然安全性和稳定性受到不少质疑,但它能够实现更友好的人机界面,可管理性强、操作和维护简易、软硬件兼容性好,而且具有价格优势。对于可以牺牲一些稳定性和效率的非关键业务和中低端应用,采用PC服务器具有更高的性价比。当然,随着技术的发展,PC服务器及Windows操作系统在性能、稳定性、安全性等方面也不断提高和完善,加之PC服务器还可以支持现在流行的Linux、SCO Unix、Solaris for x86等Unix操作系统,所以其应用范围也非常广泛,特别是在中小企业市场占有绝对的优势
服务器系统测试工程师负责最新服务器相关产品研发阶段的软硬件兼容性验证、功能测试、系统压力验证以及性能评估-包括:1:软件;固件功能验证=2:部件兼容性以及功能性验证=3:系统稳定性压力测试=4:系统性能评估。
0条评论