为何测试时性能吊炸天而上线却惨不忍睹?

转自:冬瓜哥

为何测试时性能吊炸天而上线却惨不忍睹?

无数次,让各个存储厂商的售前、售后、架构师头痛的一件事情就是:明明前期测试的时候性能强悍到报表,SPC1之流登顶,结果用户实际业务部署之后发现,性能惨不忍睹。厂商出动顶级架构师优化,结果还是不行,无力回天,甚至直接退货。

到底是什么原因导致这类事件?可以明确的讲,90%以上的原因就是因为两个字:时延。纵观性能测试,哪个不是“提高队列深度”、“增加线程数量”。具体体现为IO测试软件里的诸如“Outstanding IO Depth”或者“Queue Depth”以及“Job Quantity”、“Woker Quantity”等类似参数。测试人员往往把这些值加高,其作用就是充分利用系统IO路径上各处的并发度。正如上文中所说,如果IO测试软件每次就发送一个IO就等在那,那么性能就是惨不忍睹。这些参数恰恰就是让IO测试软件采用异步IO的方式来发送IO,批量下发大量IO,一下子把IO路径上各处的队列压满,底层的并发度自然就能够利用起来。同理,那些业界拼性能的公开测试,套路都一样,就是增加并发度。冬瓜哥看来,这毫无意义,这就像弄它一万台烂机器,每台机器只跑1000的IOPS,那么整个系统的IOPS就是一千万一样滑稽。松耦合,高并发,测出来的性能当然吊炸天了,不仅炸了天,只要愿意,砸足够的钱,宇宙都可以无敌。

那么,现实中的各类应用系统,比如数据库、ERP、OA等等传统企业常用的系统,他们的IO Style是什么样子?我们往往都在说“OLTP”、“OLAP”,这是前人们对传统IT业务的分类,这个分类今天依然适用。OLTP就是所谓Online Transaction Processing”在线交易类,此处的“交易”并不是指狭义的拿钱买东西的交易,而是指一种“有人在焦急的等待恨不得马上返回状态”的业务,比如数据库查询、更新,网上购物,网聊等,都算OLTP场景,也就是实时性很强的场景;而OLAP中的A就表示Analysis,在线分析类,比如“计算一下本季度销售数据出n个报表并根据某模型预测下一季度销售额”该类业务场景并不要求实时性,也很难做到实时性,其需要读入大量数据做运算,有些甚至需要十几个小时的运行时间,基本快有点超算的意思了,该类场景有个时尚点的词叫做“大数据分析”。

可以很明显的看到,OLTP业务对IO的要求是时延和吞吐量兼具,而OLAP场景一般只要求吞吐量。同时,OLTP类业务发出同步模式的IO的比例远高于OLAP类业务,因为实时性场景下,很多时候必须一步一步的来,比如点击购买按钮,付款后,才能走下一步,没有任何电商为了实现批量下发IO获得高吞吐量而在你点击购买按钮之后不等你付款就直接让商家打包包裹去了。同步IO是最难优化的IO场景。一般都是OLTP类业务会遇到性能问题,就是因为其对时延有要求,自己还时不时就发送同步IO。

咋办?既然原因找到了,就是同步IO呗,那么同步IO最怕的就是时延大,所以提升同步IO场景的性能,唯有降低IO路径时延,别无他法。怎么降低时延?什么诸如“虚拟化网关”之类,如果非常在乎性能,那趁早别用;LVM?如果不是极度要求管理便捷性,也不要用;软Raid?这东西增加的时延笔虚拟化网关和LVM都高,趁早也不要用;虚拟机?也增加时延。多路径软件?也增加时延;走网络交换机访问存储系统?改用点对点直连,也能节省几百纳秒的时延。反正你就看吧,IO路径上能砍掉的全砍掉。再不行,就得使用户态驱动的模式,把IO直接在用户天下发给HBA,但是这个不是一般人能玩的,只有一些专用系统可能这样去玩。

疯了!都砍掉了,代价必然是管理便捷性越来越差。是的,就看你要性能还是管理性了。这还没完呢!还有一招更狠的,把外部存储系统直接砍掉把!啥?外部存储系统也增加IO时延了?是的,在缓存不命中的时候,其时延比单盘还要高。我……,没道理把?

来,冬瓜哥给你讲讲。服务器拿什么连接到磁盘的?HBA啊。接本地磁盘一般用什么HBA?SASHBA啊!SAS HBA速率是多少?12Gbx4=48Gb/s啊!好,那么接外置存储系统用什么HBA?一般是FC HBA啊,速率16Gb/s。好,那么SAS HBA是不是直接接磁盘了,而FC HBA还要至少经过下面这些角色才能到磁盘:FC交换机、外置存储系统控制器(本质上就是服务器)前端HBA、控制器OS内核、控制器上的数据缓存(就是DDR RAM)、用户态/内核态IO处理程序、后端HBA、JBOD上的SAS Expander、SAS磁盘。哎呦我……,说的连我自己都怕了,一笔IO请求在不命中存储系统缓存的情况下,后面还要经历这么多角色,时延能不大么?反观本地盘场景下,IO直接从SAS HBA控制器到SAS盘了,就一跳,时延当然低了!原来如此,SAS HBA+本地盘的方式,在吞吐量上当然比不了动辄上千块盘的外置存储系统,但是时延上绝对是有优势的(相比外置存储系统缓存不命中前提下,命中则没有优势)。那么在随机读场景下,缓存命中率非常低,这么说SAS HBA+本地盘的方式的优势会显现的更加明显了?是的。所以冬瓜哥说,不行可以考虑直接砍掉外置存储系统。额,呵呵。酸爽不?

最狠的,当然,就是直接上存储领域的核武,终极大法:SSD!果不其然,爽了。

原文地址:https://www.cnblogs.com/timlong/p/8320342.html

时间: 2024-10-24 04:04:46

为何测试时性能吊炸天而上线却惨不忍睹?的相关文章

压力测试tps性能下降问题解决方案

压力测试tps性能下降问题解决方案 背景 测力测试时反映tps一直下滑的问题,为了重现该问题,开发一个简单交易进行测试,测试代码如下 录制该交易脚本,并放在LoadRunner11中进行测试,场景为10个用户同时启动并持续的跑.可以看到1分钟之后tps开始下降,并在后期持续下降. 此时分析服务端日志.javacore.heapdump.gc等,并未发现异常现象.修改服务端线程池相关等,但测试结果却是一如既往的下滑.记录服务端处理请求时间,发现一直很稳定,初步怀疑是客户端压力不够导致,但一直无具体

Kafka测试及性能调优详细总结

Kafka性能测试 测试背景 由于业务需求,针对kafka在不同参数下的性能进行测试.从而进行kafka性能调优 测试目标 测试kafka 0.8n的性能(Producer/Consumer性能).当消息大小.批处理大小.压缩等参数变化时对吞吐率的影响. 测试环境 软件版本:kafka 0.8.1.1 硬件环境:3台多云服务组成的kafka集群.各服务器CPU4核,内存16G,配置如下: 服务器IP: 203.150.54.215 203.150.54.216 203.150.54.217 测试

使用iozone测试磁盘性能

IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random write, random mix, backwards read, record rewirte, strided read, fwrite, frewrite, fread, freread, mmap, async I/0 等不同的模式下的硬盘的性能.测试的时候请注意,设置的测试文件的大小一定要

使用iperf测试网络性能

iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动.丢包率.最大段和最大传输单元大小等统计信息:从而能够帮助我们测试网络性能,定位网络瓶颈.iperf是开源的,源代码可以从http://sourceforge.net/projects/iperf/下载. 1.    iperf能够做什么 提起iperf,想必大家都知道它是用了测试网络性能的.具体说来,Iperf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络

测试mysql性能工具

mysqlslap mysqlslap可以模拟服务器的负载,并输出计时信息.它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用.测试时可以执行并发连接数,并指定SQL 语句(可以在命令行上执行,也可以把SQL 语句写入到参数文件中).如果没有指定SQL 语句,mysqlslap 会自动生成查询schema 的SELECT 语句. MySQL Benchmark Suite (sql-bench) 在MySQL 的发行包中也提供了一款自己的基准测试套件,可以

使用iozone测试磁盘性能(测试文件读写)

IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random write, random mix, backwards read, record rewirte, strided read, fwrite, frewrite, fread, freread, mmap, async I/0 等不同的模式下的硬盘的性能.测试的时候请注意,设置的测试文件的大小一定要

Apache JMeter--网站自动测试与性能测评

2013-02-28 15:48:05 标签:Jmeter From:http://bdql.iteye.com/blog/291987 出于学习热情,翻译总结Emily H. Halili的<Apache JMeter>一书的部分内容. JMeter的简介 可以肯定的是,JMeter至少符合以下几条自动测试标准: 零购置成本--直接从http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi下载得到. 学习曲线平滑--只需要基本

专业测试我也能够做 教您如何自己测试PC性能

1 处理器测试 前言: 您是不是对各大媒体上经常看到的评测充满好奇又跃跃欲试?那些网上或纸上的数据对你来说是不是还不够真切呢?其实测试电脑个部件的性能,每位朋友都可以在自己的机器上尝试,只要选对了测试软件,用可选的测试方法,您也可以做出不逊色别人的专业评测.怎么样?想试试自己电脑的性能就近如何吗?跟我来!处理器测试 CPU作为电脑的核心部件,对电脑性能影响极大,而价格也是不菲.目前CPU更新换代非常之快,各种产品分类非常细致,往往搞得初学者一头雾水,奸商也常常钻空子,把CPU超频,打磨后再买给电

做app兼容性测试时如何挑选机型

在做app测试时,需要做适配测试,同样的页面在不同的手机上可能效果不同. 如何挑选机型呢?主要从以下几个方面. 分辨率:iOS手机的分辨率有1334 x 750,1920 x 1080,1136 x 640,960 x 640等:android手机的分辨率有1920 x 1080,2560 x 1440,1280 x 720,960 x 540等. 操作系统:iOS有8,9.x,10等:android有7.0,6.0,5.1,4.4等. 品牌:iOS要测的机型有4s,5c,5/5s,6/6s,6