十二款用于自主云评测的开源工具
马上年底了,各种云评测陆续放了出来,最近看到有一些评测也引起了争议,第三方评测数据可以作为参考,真正要使用云,将业务放到云上,还是要自己来做一些评测,一方面自己跑的数据可信,一方面自己最了解业务需求,知道测试的时候应该重点关注那些指标。
云评测的三个阶段
云在使用之前应该经过三个评测阶段,性能评测、网络质量评测、业务评测。
1.性能测试
性能评测主要关注云服务的性能,比如云主机的CPU、磁盘、网络性能,RDS、负载均衡、S3等服务的性能。客观的说,因为每一个朵云可用区域上线的时间不一样,搭建云的物理机配置可能也会不同,所以性能多少都会有差异。另外,因为云厂商的能力不同,有的云厂商软件版本也会不一致,造成性能也会有差异。尽管云厂商在上线之前都会做严格的性能测试,但是云厂商一般是基准测试,并且不会公布详细的数据,所以作为云的使用者应该通过自己评测,做到心中有数。
2.网络质量评测
云的一个特性就是基于网络,所以放到云上的业务大多也都是基于网络的,所以对云的网络质量评测很重要。另外要注意,网络质量是动态变化的,所以对云的网络质量评测在使用之前要评测,在使用过程中也要长期持续的监控。
3.业务评测
业务上线之前,应尽可能全面的对云系统是否能满足业务进行评测,尽可能的模拟各种业务场景,确保在各种极端情况下,云系统能满足业务的需求。一般在流程比较完善的组织内部,都会有严格的业务测试流程,但是要注意如果之前的流程是在非云环境,要结合云环境进行相应的调整。
云评测都可以使用那些工具
云评测可以使用的工具很多,因为在云上一般使用Linux居多,本文介绍的工具侧重Linux系统,并且以开源工具为主。
1.Super Pi
网址:http://www.superpi.net/
Super Pi是一个单线程基准测试,可以计算特定位数的Pi。使用Gauss-Legendre算法,是测试纯单线程x86浮点性能的理想选择。
Super Pi是免费软件,可以随意下载分发,在Super PI网站上提供常见硬件的Pi计数得分,方便对比。
注意Super Pi是单线程的,不能用于多线程的CPU测试,通常用于粗略比较CPU计算能力,CPU测试衡量指标比较多,建议CPU测试侧重基于业务压力的测试。
2.FIO
源代码网址:https://github.com/axboe/fio
二进制下载网址:http://freshmeat.sourceforge.net/projects/fio
FIO作者是Jens Axboe,是一款I/O测试工具,用于基准测试和压力/硬件验证。支持19种不同类型的I/O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等),支持多线程作业,可以在块设备和文件上工作,FIO是测试IOPS的利器,同时支持Windows系统和Linux系统。
3.IOzone
网址:http://iozone.org/
IOzone是一个文件系统基准测试工具,支持测试各种文件系统。IOzone支持多线程,支持同步或异步I/O读写模式,IOzone还有一个特点是支持测试结果生成图片,方便直观的看到结果。
4.dd命令
dd是系统自带命令,不用特别安装,使用dd命令可以快速判断磁盘io性能。如果源是磁盘,目标是/dev/null,可以初步判断磁盘读性能;如果源是/dev/zero,目标是磁盘,可以初步判断磁盘写性能。dd缺点是只能测试顺序读写,不能测试随机读写性能。
5.iometer
网址:http://www.iometer.org
Iometer常用于磁盘I/O测试,是用于单个和集群系统的I/O子系统测测试工具。最初由英特尔公司开发,并将其交给开源开发实验室(OSDL)。
Iometer 包含了两个程序,Iometer 和 Dynamo。Iometer 是控制程序,可以设置操作参数,启动和停止测试。Dynamo 是负载生成器。Iometer支持Windows系统和Linux系统I/O测试。
6.iPerf/iPerf3
网址:https://iperf.fr/
iPerf 是一个网络性能测试工具,可以测试TCP和UDP带宽质量,具有多种参数和UDP特性。iPerf可以报告带宽,延迟抖动和数据包丢失。
iPerf支持常见的操作系统。
7.Netperf
网址:https://hewlettpackard.github.io/netperf/
Netperf最初是由惠普开发的,用于衡量许多不同类型网络的性能。提供单向吞吐量和端到端延迟的测试。Netperf基于C/S模式的,服务器端是netserver,用来侦听来自客户端的连接,客户端是netperf。在服务器端和客户端之间,建立控制连接,传递测试配置的信息,以及测试的结果。Netperf提供了许多预定义的测试,例如 测量批量(单向)数据传输或请求响应性能。Netperf根据应用的不同,可以进行不同模式的网络性能测试,
8.ping、traceroute、mtr
ping、traceroute、mtr是系统自带命令,可用于测试网络质量,特别是mtr命令可以连续测试。
但是命令行不能或者不方便长期进行网络质量测试。
9.smokeping
网址:https://oss.oetiker.ch/smokeping
SmokePing由Perl编写的免费和开源软件,由MRTG和RRDtool的创建者Tobi Oetiker编写,能可视化的长期跟踪网络质量,使用浏览器交互式图形展现,支持分布式部署,可以配置报警,并且支持插件。
10.ApacheBench
ApacheBench(ab)是一个单线程命令行计算机程序,用于测量HTTP Web服务器的性能。最初设计用于测试Apache HTTP Server,通用于测试任何Web服务器。
ApacheBench与标准Apache源代码分发捆绑在一起,与Apache Web服务器本身一样,是免费的开源软件,并根据Apache许可证的条款进行分发。
11.SysBench
sysbench是一个基于LuaJIT的可编写脚本的多线程基准测试工具。 它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂工作负载。
sysbench特性如下:
支持系统基准测试;
统计有关速率和延迟的广泛数据,包括百分比和直方图;
通过在用户提供的Lua脚本中实现预定义的钩子,可以轻松创建新的基准测试;
支持POSIX线程性能测试;
支持数据库OLTP基准测试;
能够每秒生成和跟踪数亿个事件。
12.Zabbix
Zabbix是目前流行的开源监控工具,支持常见操作系统,支持网络设备,配置灵活,支持自定义指标的监控,支持多种报警方式。
Zabbix很适合长期对云的性能监控,也可以和性能测试工具联动,可视化的展现测试结果。
自主云评测是必须掌握的技能
测试之前,首先需要理解被测试的指标,开源工具的使用一般都有些门槛,需要多研究和实战。上面介绍的开源工具基本都支持命令行,可以写成脚本,方便日常使用,也可以结合自己的运维场景,尽量将常用场景的测试自动化。
由于云环境复杂,并且可能每个业务场景对云的要求也不一样,使用云之前需要对云进行从性能到网络、再到业务的全面评测,做到心中有底,才能避免业务发生问题。随着业务压力增加,由于有详细的数据,也能做到心中有数,让对云的使用尽在把握中。