如何进行性能测试与分析
展开全部
“为什么我上线系统的性能和性能测试的结果相差很大呢?”这是一些用户会经常碰到的问题。当然产生这个问题的原因很多,下面我用一个很典型的例子来说明一下。一个用户登录界面,要求用户输入用户名、密码点击登录,登录系统。程序的处理流程如下:根据输入的用户名、密码生成SQL语句,select roleID from usertable where username='用户名' and password='密码',把这条语句发给ORACLE数据库,从数据库中查询数据,如果查询的roleID不为空则是合法用户允许登录,否则不允许登录系统。 这是一个非常简单的系统。性能测试人员用LOADRUNNER录制脚本,然后用逐步加压的方式来运行脚本,TPS、ORACLE的命中率、资源占用都很理想。性能测试人员就陷入了一种盲目的乐观情绪中,就认为系统性能没有问题,结果在实际运行中系统性能与性能测试中的性能相差很大,为什么会出现这种情况呢,下面我们来分析一下:首先我们来了解一下ORACLE的运行机制:从客户端发送一条SQL语句到ORACLE服务端,ORACLE要对SQL语句进行解析、执行、返回结果。 并且ORACLE有一个LRU(最近最常使用的语句)机制,把最近最常使用的SQL语句保存到共享内存SGA中的libary cache中,下一次再有这样的请求它就不解析了,直接从共享内存中使用。假如我们使用的SQL语句是select roleID from usertable where username='AAA' and password='123',在我们加压的时候它就解析一次或很少的几次,其他的请求就会从共享内存中取得,并且返回的结果也会保存到BUFFER CACHE中,这样系统的测试结果当然就是很好的。但在实际工作中,用户名和密码是各种各样的,而ORACLE解析的条件又要求非常苛刻,SQL语句有一点不同它就认为是不同的SQL语句就要重新进行解析,而解析非常耗费系统资源,所以在实际运行中系统的性能和性能测试的结果相差很大。通过这个例子我们可以看出我们没有把真正的压力压到点上,也就是进行的不是有效性能测试。 如何进行有效性能测试呢?一定要仔细地分析你要进行测试系统的架构、技术体系,LOADRUNNER只是一个加压工具,它对 ORACLE的监控也非常的不好,不要盲目的相信LOADRUNNER.一定要充分重视测试的调研和设计工作,如果能在测试前拿到系统开发的各种文档是最好的,如果没有也要充分调研业务人员、开发人员、系统运维人员,了解系统的技术架构、业务组成、业务流程、业务频度、数据量等要素,这样才能进行有效性能测试
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |