关于性能测试应该知道的一些事(转载)

1 怎样的性能测试结果才是有效的
1.1 错误观点
性能测试工具运行一定用户数都成功,则表示该服务器能支持这么多用户数。这是错误的。
解答:
A.       
因为一次有效的测试结果,不只用户都运行成功,同时需要保证访问一个页面或一次交易的响应时间在合理范围。“2-5-8原则”,简单说,就是当用户访问一
个页面或一次交易能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内
得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为
系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。
B.        测试场景不一定模拟了真实业务场景,因为浏览器是并发多线程多TCP完成一个页面的,而测试工具基本都是1,2个线程;对服务器的压力是不一样的,真实环境的TCP压力是性能测试工具虚拟环境的几倍。

2 影响WEB服务器性能指标的因素有哪些
为什么性能测试工具,需要提供事务(页面或交易、全脚本)指标、TCP连接、吞吐量、服务器资源监控、请求数/响应数。
1)        硬件资源:如CPU、内存、网卡吞吐量、I/O能力、SWAP交换能力
2)        线程数:这里介绍JAVA的WEB服务器,默认每线程占用的内存为2M,而32为系统JAVA进程(如tomcat、JBoss)占得空间只有2G(一般比这个小),因此线程数有限制;64为无限制线程,但CPU要跟得上
3)        TCP连接数:操作系统的TCP连接数理论值一般很大,操作系统对TCP连接设置有默认值(怎么配置,可以网上搜索,这里不介绍);但实际测试中TCP连接在几百,就出现测试的响应时间很长。抓包分析,原来是三次握手的SYN包服务器不及时响应,导致SYN重传(3秒后,9秒后)。

如果SYN丢了,则会重发,但是第一次是3秒后,第2次是在9秒后,如果重发才收到的SYN_ACK,则导致TCP连接超长,从而导致业务响应时间延长。

4)        响应时间:服务器响应时间小,用户体验才好,在大量用户并发的情况下,HTTP响应时间在用户忍受度下才是有效的,一般采用“2-5-8原则”。
5)        软件本身代码性能算法:这个不做介绍,如差的算法、查询数据库时间长等等。

3 测试人员经常遇到的一些常见问题及解答
3.1        为什么使用浏览器访问页面响应很快,1-2秒就完成;而使用测试工具却需要10几秒,甚至几十秒才完成脚本
解答:
A.       
这是由于浏览器访问页面响应是并发的,同时并发多个线程(多个Socket),而性能测试工具基本是串行发送请求的。如果一个页面有100个资源
(CSS、HTML、JS、图片),需要发送100个HTTP请求,如果使用6个线程(浏览器),则每个大概请求14个HTTP;如果使用一个线程(测试
工具),则需要请求100个,时间当然大很多。下图为chrome浏览器调试工具显示的并发情况:

B.        另外浏览器具有缓存功能,如果之前访问了www.qq.com
会把一些图片缓存在浏览器临时目录,下次请求时发送的HTTP请求会带上If-Match或Etag等头域,WEB服务器判断资源没改变则会304响应,
而不是回200 OK,这样减少资源的传输,所以时间就小。而有些测试工具是不携带这些头域(包括Loadrunner),因此回的响应是200 OK。所以测试人员默认真实测试时,可以考虑部分有缓存,部分没缓存。

3.2        性能测试工具是怎么模拟WEB虚拟用户
A.        录制
使用浏览器进行正常业务操作,性能测试工具录制下HTTP请求信息。一般需要记录URL与头域、内容、响应码。虽然不同的性能测试工具录制方式不一样(如
loadrunner采用Hook,JMeter采用代理或badbody,kylinPET采用网卡抓包与代理),但都能实现录制正常业务的HTTP请
求。
测试工具最好能录制出缓存头域,即If-Match或Etag,loadrunner好像不支持录制缓存头域。
B.        模拟用户
根据录制的脚本发送HTTP请求与接收响应,发送前替换参数(实现多用户不同参数值)、接收时关联参数(从接收的响应消息获取参数值,如Cookie、JSessionID)
下面简单列举使用过的性能测试工具是如何模拟的(工具运行一个用户,然后使用wireshark抓包分析得到的结论):
?        Loadrunner:根据录制脚本发送HTTP请求,如果HTTP请求包括内嵌资源(如图片、CSS、JS),会启动第二个线程执行内嵌资源,即Loadrunner支持同时两个线程两个TCP连接。
?        kylinPET(国产):可通过配置设置一个线程或者多个线程并发发送HTTP请求,多个线程并发及TCP连接数跟浏览器行为一样。
?        JMeter:只有一个线程,一个TCP连接
?        其他工具:本人没用过,请用过的兄弟姐妹可以补充下。通过wireshark抓包分析。

3.3        怎样才能测试出WEB服务器能支持多少真实用户,怎样的服务器调优参数才合理
解答:
这需要性能测试工具可以模拟出真实用户的行为,包括HTTP请求数、每用户并发线程与TCP连接数、思考时间、有无缓存。
为什么需要模拟真实用户的线程数与TCP连接数呢,上面提到过,WEB服务器的线程数与TCP连接数往往很低,这不是提高硬件就能轻松解决的,这也是服务器调优比较复杂的配置。
因此,只有尽最大能力模拟真实用户(浏览器或其它WEB客户端,可能不同浏览器的并发线程与TCP数都不一样)的行为的测试场景,测试结果才最真实,服务器调优才最有意义。

4 怎样才能测试系统支持多少用户
4.1 模拟真实用户的行为
只有模拟用户一样的行为才可以系统支持的测试用户数有效,因此需要模拟一样的并发数、TCP连接数、甚至可以是HTTP请求的时间间隔。用户可以是浏览器、智能手机、智能机顶盒,测试工具模拟他们一样的行为才是最有效的测试。

4.2 测试结果数据在合理范围
4.2.1 用户统计
成功数、失败数、每秒在线数、最大在线数,通过这些指标分析此次测试结果支持的用户数、用户最大数

4.2.2 点击率
每秒平均HTTP请求数、响应数。分析系统的处理能力

4.2.3 事务
事务成功、失败、时间,事务一般是整个脚本运行时间、或者一个页面或一个交易,通过结果分析,得出每个事物的时间是否合理,符合“2-5-8”原则,如果
测试结果显示事物时间非常大,则表示系统支持不了此次测试的用户,因为用户的响应时间太大(像火车订票一样,太多用户导致响应时间长,用户无法忍受,则认
为这个系统烂)。
当然,还需要查看事务的百分比,分析90%、80%、70%、60%的事务时间是否在合理范围。

4.2.4 TCP连接信息
TCP连接成功数、失败数、TCP三次握手时间。因为此次测试结果可能是由于服务器系统或网络的TCP的丢包与重传才导致延时大的。如果是服务器的原因,服务器收到TCP的SYN而不处理,可以通过调试服务器的TCP配置来优化。
怎么才知道是服务器的问题呢,这个需要性能测试工具能给出TCP连接时间(当前了解只有kylinPET可以支持),如果显示超过3秒,这时需要检查是网
络还是服务器问题,可以在服务器端抓包(tcpdump或wireshark)然后分析TCP的SYN信息(个数、时间)

4.2.5 资源占用
服务器的CPU、内存、带宽、I/O是不是已经不足,导致系统上不去是哪个原因,根据原因进行调优或升级。
测试时需要考虑性能测试工具的CPU占用率,如果性能测试工具占用CPU很高,此次测试可能瓶颈是在工具,而导致测试结果是无效的。

时间: 2024-08-02 01:09:24

关于性能测试应该知道的一些事(转载)的相关文章

关于计算机书籍,你应该知道的五件事(转载)

本文转载自:http://www.chengxuyuan.com/post/434.html -------------------------------------------------------------------------------------------------------------- 重要内容摘要: 1.  最好的效果莫过于: 讨论 实践 教授给他人——如写作 2. 技术书籍,就是花钱买时间 -------------------------------------

华为前员工:我在华为敲代码知道的事(转载)

作为一名前华为程序猿,最近经常有小伙伴问我说为什么要放弃一份看起来高大上的前沿科技工作,我在当面自然都义正言辞地表态说因为我深爱着现在的工作,(大义凛然状)想在这里干一番大事业!其实静下心来想想,不免有一些感触和心里的话,正好借这个机会说出来,以飨读者,也顺便纪念那一段逝去的时光. 要说华为公司的一个显著优势,自然就是高收入了.在 5 月初的一期<财经郎眼>节目中,郎咸平教授曾披露,一个在华为公司工作 7 年的普通员工,年薪可以拿到 18 万,奖金 35 万,分红 13 万,年收入一共在 66

解读dbcp自动重连那些事---转载

http://agapple.iteye.com/blog/791943 可以后另一篇做对比:http://agapple.iteye.com/blog/772507 同样的内容,不同的描述方式,不一样的效果. Hi all : 最近在做 offerdetail 优化时,替换了数据库驱动,从 c3p0 0.9.1 -> dbcp 1.4 , 顺便研究了下 dbcp 的自动重连的一套机制,也做一下分享,大家周知一下. 数据库链接 常见的问题: 1. 数据库意外重启后,原先的数据库连接池能自动废弃老

关于UIWebView的一些事---转载

转自:http://www.cocoachina.com/applenews/devnews/2013/0105/5473.html 最近做了浏览器的项目,和UIWebView大了不少交道,所以专门开个帖子讲讲相关内容吧,想到什么就更新什么.         基础篇:NSURL介绍 http://blog.csdn.net/ysy441088327/article/details/7416759网页执行js代码 1  stringByEvaluatingJavaScriptFromString

转载:推荐给每个“数据分析师”看的PPT——关于开会的那点事

推荐给每个“数据分析师”看的PPT——关于开会的那点事 经常对开会“深恶痛绝”,大概的原因有两个,其一,开会之前的准备,各种指标.各种分析.各种PPT,其二,开会中的板凳.废话,尤其是走形式的会议,战线长,说没有在会议上打盹的看官应该不多吧.反而是会后才缓过一口气,心情顿时好多了.就像 秋叶老师 说的,这个话题大家都有共鸣,有吐槽的欲望,值得驻留读一读,思一思. 另外,秋叶老师原文中有三句话十分有深度,读后思考了好一阵子,深有感悟,先贴在前面大家共享: 会议不过是一种工具,要达到目标,低效率的会

CDN缓存(转载)

CDN缓存那些事(转载) 原文地址:http://bbs.qcloud.com/forum.php?mod=viewthread&tid=3775 注:原文全文复制,仅仅作为自己下次学习备份,勿喷,谢谢- CDN是什么? 谈到CDN的作用,可以用8年买火车票的经历来形象比喻: 8年前,还没有火车票代售点一说,12306.cn更是无从说起.那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不通火车,火车票都要去市里的火车站购买,而从县城到市里,来回就是4个小时车程,简直就是浪费生命.后来

实用主义性能测试

学习了<软件开发沉思录>中的实用主义性能测试,对重点内容做下记录: 性能测试应该囊括确保产品性能符合要求所需的一切行动.这里有四个关键点:需求.产品性能数据.沟通和流程. 1.需求采集 需求采集中的几个重要问题:要度量什么?如何知道我们需要什么?以及如何得到确实有用(而非帮倒忙)的数据? @要度量什么 最重要的性能度量点有两个,最大吞吐量以及给定吞吐量下的响应时间.一个好的做法是:分别度量几种不同吞吐量下的响应时间,从中分析负载对响应时间的影响. 需要通过度量找出两项数据:当响应时间恰好可以接

压测难,难于上青天,80%的直播应用都败在了这里

目前腾讯WeTest服务器性能测试已经正式对外开放,点击链接:http://wetest.qq.com/gaps/立即体验! 作者:Oliver,腾讯服务器性能测试团队产品经理. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 直播的火爆带来了海量的用户,也带来了海量的服务器并发.本文分析了目前直播行业存在的难点,从腾讯目前的新直播产品--NOW直播出发, 了解直播应用背后的那些事. 直播,突然成为了中国互联网的一个最流行的词汇.在<2016-2020年中国网络

Java 8 Stream的性能到底如何?

那么,Stream API的性能到底如何呢,代码整洁的背后是否意味着性能的损耗呢?本文我们对Stream API的性能一探究竟. 为保证测试结果真实可信,我们将JVM运行在 -server 模式下,测试数据在GB量级,测试机器采用常见的商用服务器,配置如下: OSCentOS 6.7 x86_64CPUIntel Xeon X5675, 12M Cache 3.06 GHz, 6 Cores 12 Threads内存96GBJDKjava version 1.8.0_91, Java HotSp