系统性能优化的常见八大误区
上一篇 / 下一篇 2012-03-26 09:18:35 / 个人分类:性能测试
一、吞吐量与响应时间
#vfP$[`4t c f08z"pM%zb#XL3c0系统的吞吐量反映了一个系统的容量,可承受的负载,很多系统都以这样一个指标来衡量系统的性能。而响应时间往往更容易忽视。我认为吞吐量更多是衡量一个系统在特定压力下的稳定性,而响应时间可以更好的形容系统性能。一个请求响应时间满足不了需求,那系统再高的吞吐量是没有意义的。比如普通的网站页面,如果客户的一个请求都能在200ms以内响应,那是非常不错,如果能在2秒内响应,那也还行,但如果都要在20秒响应,估计没人使用。而对于局域网内的应用,如营业厅收费操作,这种响应时间如果是2秒都会让营业员有明显的不爽。51Testing软件测试网5m Sj`*_*xU
二、忽视系统环境差异
"H,o*@0[0| @c4o9S0我们是否经常出现线下性能测试非常好,线上性能很差问题,或者是A环境好,B环境性能差。这种情况大部份是系统环境的差异,如两个环境硬件不一样,配置参数不一样,数据规模不一样,缓存命中率不一样等等。在做性能测试时需要深入分析正式环境的各种数据细节,然后在做性能测试时有针对性的去模拟。
yY4|2m;v%\ r^0三、性能测试无用论
'{SeZ,C\eA R0X/gd/Dcg&Y1{&|?0性能测试是一个非常复杂的工作,也是最考验人计算机功底的工作,性能测试并不仅是学习如何使用loadrunner或jmeter之类的工具,更多是要分析用户及业务场景,估算并验证系统性能容量,找出性能瓶颈并解决。精通测试工具可以更好的提高工作效率。之所以有些人会提出性能测试无用论,大部份因为他认为正式环境太复杂,无法有效模拟出正式环境的瓶颈。其实这也是性能测试的难点,如何在不同的环境中模拟出性能瓶颈。如果是普通测试工程师,估计只会根据业务逻辑搭建性能测试环境,并给出测试结果。如果是高级测试工程师应该清楚系统架构、应用逻辑、业务场景、数据分布、硬件性能等等,最后给出有意义的性能测试模拟场景和数据。
7U6H|RYU0性能测试最容易忽视的是数据分布与缓存命中率。正式环境的数据分布可以通过线上数据抽样,没有正式数据只能根据业务评估。比如工作流应用中个人平均待办工单是多少?电子商务应用中热销商品的评价记录会有多少?这些数据分布对性能测试的结果有非常大的影响。51Testing软件测试网gb2e;H7aZi/W`
缓存命中率对性能测试结果的影响更恐怖,可能有10倍,甚至上万倍都不为过。常用如CPU cache对内存的缓存,内存对硬盘的数据缓存,memcached对db数据的缓存,浏览器本地对远程的缓存。我们做性能测试需要仔细分析正式的缓存命中数据,然后模拟最差值、正常值、最好值去评测,最后分析出缓存命中率对真实性能的影响。51Testing软件测试网*DsG9R-c:zg
四、缺少性能量化51Testing软件测试网6O ~N7`1f
s#|D,u/U Po9BXY0性能量化是指对系统功能或硬件的主要指标进行性能指标计算,比如一个查询请求的所有开销计算,包括网络开销,应用服务器开销,数据库服务器开销等等,或者是更细化的CPU开销,内存开销,IO开销等。性能量化还包括系统所使用的硬件指标,包括CPU性能,内存容量及性能,硬盘带宽及IOPS,网络带宽及延时等等。没有这些基础数据是很难做性能量化,否则只能做简单的表面性能测试,给出一些感性数据,准确的系统整体性能容量评估也无从谈起。没有扎实的性能量化基础数据,搞不清楚一个逻辑在各个环节开销,那做性能优化只能是凭感觉或经验走。51Testing软件测试网6E.w;h/g$wXg
五、硬件成本