要做好性能测试,首先我想必须要了解影响性能的几个因素。
参阅了各种资料,关于性能方面有太多的学问。我想做个小的总结。
从程序设计,时间上来说,分为数据传输时间,数据存储时间和数据处理时间。
因此,针对时间上的,我们可以考虑以下的方法来提高性能:
1)降低算法本身的复杂性【比如,将复杂对象转化为聚合关系:将一个复杂类拆分成由两个或两个以上的类通过聚合关系形成的新类】;
2)传输时间:如果不同处理器之间的数据传输成为影响性能的主要瓶颈,则应重新审查对象在不同处理器上的分布问题。调整的目标,一是减少不同处理器之间数据的传输量, 二是缩短数据传输的路径;
3)存取时间:如果系统执行某些功能时,需要大量地频繁地访问外部存储设备,那么在面向对象设计方法中可以在内存空间中设计一个缓存空间,这样那些经常被使用的数据就会有较多的机会存储于缓存空间当中;
4)处理时间:对象的封装性导致对象的属性不能被另一个对象的服务直接访问,只能通过消息传递来完成。若存在这样一些消息传递频繁的类,就可以采用合并方法将其合并为一个类;另外可以在程序设计中,增加一些属性来减少重复计算量。
从系统性能几个指标上来看,包括:响应时间、吞吐量、用户并发数、资源利用率
1)响应时间:指系统对用户请求作出响应的时间。
从用户的角度,响应时间=呈现时间+系统响应时间。呈现时间也就是客户端的浏览器在接收到网站发来的数据时呈现页面所需的时间。系统响应时间就是客户端提出用户 请求到客户端接收到服务器发来的数据所需的时间。显然,我们测试一个系统软件性能时,呈现时间是与客户端本身硬件条件和浏览器有关,我们更关心的是系统响应时间。
那么我们现在就来看看系统响应时间。可以这样看,系统响应时间=应用服务器处理时间+数据库服务器处理时间+网络数据传输时间。
这样分析下来,我们就能很清晰地看出影响响应时间的几个主要因素了。
2)吞吐量:指的是系统在单位时间内处理请求的数量。
对于单用户的系统而言,响应时间可以很好地度量系统的性能,但对于并发系统,吞吐量常最为比较好的性能指标。系统的吞吐量越大,说明系统在单位时间内完成的用户 或系统请求越多, 系统的资源得到充分利用。
吞吐量=并发数/平均响应时间
3)并发用户数:指系统可以同时承载的正常使用系统功能的用户的数量。
并发用户数常用来度量服务器并发容量和同步协调能力。这个指标是看系统运行期间同一时刻进行业务操作的用户数量。该数量取决于用户操作习惯、业务操作间隔和单笔 交易的响应时间。使用频率较低的应用系统并发用户数一般为在线用户数的5%左右。使用频率较高的应用系统并发用户数一般为在线用户数的10%左右。
对于网站系统,会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。我们关注的一般是后两个数字。
4)资源利用率:反映的是在一段时间内资源平均被占用的情况
对于数量为1的资源,资源利用率可以表示为被占用的时间与整段时间的比值;
对于数量大于1的资源,资源利用率可以表示为在该段时间内平均被占用的资源数与总资源数的比值。
常见的系统资源包括:CPU、内存、磁盘、网络等等。
先总结这么多,后面还会继续更新。
Feel free to tell me if you have any questions and suggestions.