目录
一、Benchmark(基准)简介
二、Benchmark的组成
三、工具
1.集成式测试工具
2.单组件测试工具
四、Benchmark特点
五、Benchmark测试须要考虑的诱因
六、Benchimark测试步骤
1.观察
2.假定
3.预测
4.环境控制
5.测试
6.推测和推论
七、Benchmaark测试数据的实际用途/意义
八、Benchmark的重点
九、Benchmark的局限性
一、Benchmark(基准)简介
基准测试(benchmarking)是一种检测和评估软件性能指标的活动(是一个评价方法)。在某个时侯通过基准测试构建一个已知的性能水平(称为基准线)。其在整个计算机领域有着常年的应用,计算机领域应用最成功的就是性能测试。
二、Benchmark的组成
Benchmark的核心由3部份组成:数据集、工作负载、度量指标。
三、工具
1.集成式测试工具
1)ab:ApacheHttp服务器基准测试工具。它可以测试HTTP服务器每秒最多可以处理多少恳求。假如测试的是WEB应用服务,这个结果可以转换成整个应用每秒可以满足多少恳求。只能对单个URL进行尽可能快的压力测试。ab详尽信息2)http_load:这个工具概念上和ab类似,也被设计为对web服务器进行测试,但比ab要愈发灵活。可以通过一个输入文件提供多个URL,http_load在这种URL中随机选择进行测试。也可以订制http_load,使其根据时间百分比进行测试,而不仅仅是测试最大恳求处理能力。详尽信息3)Jmeter:Jmeter是一个java应用程序手机linux操作系统,可以加载其他应用并测试其性能。可以进行web应用、FTP服务器、或者通过jdbc进行数据库查询测试。它可以通过控制预热时间等参数愈发灵活地模拟真实用户的访问。同时拥有绘图插口,可以对测试进行记录,之后离线重演测试结果。
2.单组件测试工具
1)mysqlslap:可以模拟服务器的负载,并输出计时信息。2)mysqlbenchmarksuite:在mysql的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速率。结果会显示哪种类型的操作在服务器上执行得更快。3)supersmack:是一款用于mysql和postgresql的基准测试工具。可以提供压力测试和负载生成。可以模拟多用户访问,可以加载测试数据到数据库,并支持使用随机数据填充测试表。4)sysbench:是一款多线程系统压测工具。它可以按照影响数据库服务器性能的各类诱因来评估系统的性能。诸如:可以拿来测试文件i/o、操作系统调度器、内存分配和传输速率、POSIX线程,以及数据库服务器等。
四、Benchmark特点
1.可重复性:可进行重复性的测试,这样做有利于比较每次的测试结果,得到性能结果的常年变化趋势,为系统调优和上线前的容量规划做参考。
PS:这些特质是为了满足基准测试的日常协程须要。
2.可观测性:通过全方位的监控(包括测试开始到结束,执行机、服务器、数据库),及时了解和剖析测试过程发生了哪些。
3.可展示性:相关人员可以直观明了的了解测试结果(web界面、仪表盘、折线图树形图等方式)。
4.真实性:测试的结果反映了顾客体验到的真实的情况(真实确切的业务场景+与生产一致的配置+合理正确的测试方式)。
5.可执行性:相关人员可以快速的进行测试验证更改调优(可定位可剖析)。
五、Benchmark测试须要考虑的诱因
1.交易配比:个别业务场景,一个流程包含多个事务,在模拟并发中,不同的事务各自的占比;
2.突发性的读写操作:个别特殊业务场景,会有短时的大流量冲击或则恳求数目激增,该怎么模拟(浪涌测试);
3.系统配置:不同环境的系统配置不同,测试结果怎样换算、如何对比?
4.测试时长:测试执行过程中,运行多长时间,不同交易运行的时间分配等;
5.结果展示类型:平均值、峰值、百分比值怎么展示,怎么对比?
6.成功/失败占比:每次测试过程中,成功和失败的事务占比统计;
7.是否可再现:如测试过程中出现报错或个别异常情况,是否可以再现?
8.是否可对比:是否有其他测试工具或则测试结果进行对比(尽量多次执行测试,进行测试结果对比:标准残差、正太分布了解一下?)?
六、Benchimark测试步骤
1.观察
我们假定系统管理员订购了一台服务器,如今瞧瞧它的最佳性能。第一步是确定服务器预期任务。其将作为一个虚拟平台还是运行一个专门的应用程序?确定这种问题以后,就可以开始基准测试了。谨记,检测标准和基准测试将依照测试内容和使用的设备而有所变化。诸如,假如作为数据库系统可能会指出处理器测试,而用于网路服务系统的话可能会突出网路性能。
2.假定
在这个步骤,工程师设定一个基准目标。假定哪些或则测试须要完成哪些?简单地进行一个测度测试将得出一些试验结果,而且没有方向或明晰的目标的话,这种结果可能是无用的。为测试创建一个基本的目标,而且所有的测试方式都围绕这个目标。诸如,工程师可能会设法测试其占用的显存以让应用程序处于最佳运行状态。他或她可能因而推论,给定“X”内存大小可以达到最佳工作负载。这可以立足于先前的研究,供应商提供的基准或其他的来源。确保你的假定是可测试的。也就是说,不要提出一个只是基于数据的而基准测试却未能否认的假定。
3.预测
接出来,对服务器基准测试做一个大体预测。假定该设备将被作为一个专门的应用服务器。系统管理员才能预测,为工作负载降低额外的核心,设备性能将提高centos 7 网络压力测试工具 ab,同样,应用程序的性能也将会改善。在个别情况下,工程师甚至可以预测改善的比列centos 7 网络压力测试工具 ab,并希望通过基准测试进行验证。
4.环境控制
变量设置。比如,可能要给服务器分配一些核心。此时,管理员每次应只修改一个设置,直至他或她能否接受在此基础上的性能变化。工程师可能须要给服务器设置为6GB的显存,并测试其与其他设备互相配合的情况(CPU、影像、硬盘以及相关联的设备)。设置不同的变量,包括更改处理器设置,但其他设置都处于最初状态。
5.测试
变量都设置好以后,如今开始进行测试。从基准线开始进行测试(已知的起点),并有系统地调整服务器设置。每位测试序列就会有一个结果,记录结果便于之后引用。在这些情况下,一个测试序列可看做是一次硬件设置修改。每应用一次新的设置,都必须重新进行测试并记录结果。一旦有足够的运行周期,工程师应当有一份完整的数据以完成她们的结论。
6.推测和推论
进行测试并确认应用程序的实际性能以及给定预计资源或设置后的性能。比如linux 删除文件,在只有一半数目的预期核心后,确定应用程序的最佳运行疗效。从这点起,确定核心与其他当前变量(所需的显存大小、当前运行的应用程序数目、软件升级/服务包等)结合给服务器提供的最佳性能。注意,任何变量的改变都须要进一步实验。
(基准测试应当在相同的环境条件下进行,这样就能进行结果比较剖析。)
七、Benchmaark测试数据的实际用途/意义
1.了解系统性能基准作为参照物(性能问题发生后的测试很难了解系统性能基准)2.辨识系统或环境的配置变更对性能响应带来的影响3.为系统优化前后的性能提高/增长提供参考指标4.观察系统的整体性能趋势与拐点发生,及早辨识系统性能风险
八、Benchmark的重点
基准测试的工作重点是统计剖析:可以从以下几个维度去进行统计:
1.选择合适的测试工具,设定合理的测试方式以及须要确认的系统性能指标;
2.选择不同的测试工具,对测试结果进行对比,选择稳定且能反应系统真是性能表现的结果;
3.多次执行测试,搜集大量的测试数据集和指标;
4.从不同维度剖析剖析数据,生成报告。
九、Benchmark的局限性
基准测试不能代替好的设计,不管是混和储存还是全闪阵列,只要能正确补充储存,终端用户就会获得足够高的IOPS虽然前端c盘性能可能不够而导致缓存不中等。因而,须要充分发挥每位储存层级的性能以补偿缺陷。非常是遇见混和储存的时侯,须要考虑的一点即是性能上的弱项效应。正由于这么,无需快速访问的数据应当置于相对稳定一些的前端c盘上。例如说在一些时侯,前端假如使用了15000怠速的c盘,虽然后端缓存大小适中也阻碍不大。假如这样的话全闪存阵列则更为容易去评判及评估由于不再须要考虑多级储存之间的关系。在这些情况下,须要了解SLC及MLC两种闪存之间的区别。其实MLC较SLC慢,须要晓得的是虽然这么,其比传统硬碟还是会快好多。在许多场景下,MLC其实就足以满足加速的需求。