|
刚学性能测试3个多月,最近测试碰到一个问题,系统搭建好了(JBOSS+oracle),进行100并发的测试,发现入账时间居然为12S。优化了数据库,但发现还是一样。而且响应时间的最小的0.5s,最大却有20S。监控系统,发现应用机和数据库的资源都很正常,没有出现很大的压力。但为什么系统这么慢呢?
后来我看到网上pacing对结果的影响,设置了pacing = 10S,也就是每个迭代之间有10s的间隔,而其他设置都不变。在进行100并发的测试,响应时间平均就为2.5s了。看了相关资料,因为LR是记录发送请求到服务器响应的时间,可能发送请求后,程序队列达到了最大请求,这个请求无法进入程序队列,而是在操作系统中等待,等待进入程序的队列,但LR已经开始计时,所以相比直接进入程序队列的和直接被处理的请求,他的系统的响应时间变长了,而后面来的请求也一样,这个时候这个个系统平均响应时间就很大了,实际也就失去了意义。
如果不明白我的意思可以看这个:
http://www.51testing.com/html/8/1502.html
http://www.blogjava.net/xingcyx/archive/2006/12/28/90498.html
那到底怎么做?是先调整PACING还是先优化系统?
1:如果不设置PACING,去优化系统,也许可以解决问题,但是如果系统优化到最优了,但还是很慢!这个时候我们或许会说,嗯,系统无法满足100并发的情况,请求速度太快,系统每秒无法响应这么多个请求,所以响应时间长。然后减少并发(实际减少并发也是减少每秒发送请求的数量,即请求速度),到50个并发,满足了。是否就说系统只能支持50并发?
2:但如果我去调整了PACING设置,减慢了发送请求速度,使得可以在规定的时间内处理完请求。这样没有太多的请求在等待,响应速度也就提高了,那么我们是否就能说系统支持100并发?
3:最后的就是先设置PACING,然后在看是否满足,如果还不满足,在去调整系统性能或是降低并发。
我们应该选择那种方法呢?这里PACING完全影响了测试的结果,我们到底应该怎么去定位这个系统性能是支持50还是100呢?到底那种设置才是真正反映100并发的情况呢? 我们如何关注这个间隔时间(请求速度)对性能的影响呢?
从客户测试的角度看,我不管你请求速度多快,不管等待时间,我只看响应时间大小!这个没有错。但如果从服务器角度看,我不管你等待时间,传送时间,我只管从程序队列到我服务器处理的时间。这个也没错,设置可以说这才是软件实际的性能。但我们性能测试又不能脱离客户端!那我们究竟要关注那个呢?到底那个性能才是我们关注的呢?
很困惑啊,请高手指教! |
|