计算机系统的总体性能标准是响应时间和吞吐量。
响应时间是提交请求和返回该请求的响应之间使用的时间。示例包括:
- 数据库查询花费的时间
- 将字符回显到终端上花费的时间
- 访问 Web 页面花费的时间
吞吐量是对单位时间内完成的工作量的量度。示例包括:
- 每分钟的数据库事务
- 每秒传送的文件千字节数
- 每秒读或写的文件千字节数
- 每分钟的 Web 服务器命中数
这些度量之间的关系很复杂。有时可能以响应时间为代价而得到较高的吞吐量,而有时候又要以吞吐量为代价得到较好的响应时间。在其他情况下,一个单独的更改可能对两者都有提高。可接受的性能基于合理的吞吐量与合理的响应时间相结合。"
----摘抄于 IBM-性能目标
http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/corr_svmon_ps_outputs.htm
悟:曾经在实际的测试工作中遇到这种情况,某一个应用程序,用LR进行性能测试,项目组曾经把思考时间分别设为10秒和0秒,得到了两个差别较大的并发数,曾经有位资深人士说,如果思考时间够大,即使用很差的机器也能做出很大的并发数.
在性能测试中,作为评价性能好坏的两个重要指标:吞吐量和响应时间, 是很容易让人混淆的。
吞吐量:字面上的意思是单位时间里处理任务的能力,它的单位常常以hits/sec或者MB/sec为主,它以系统资源为对象的,因此系统性能的好坏直接影响了吞吐量的(理论)极限值。
响应时间:这里是指从发送请求到完成响应的整个过程所经历的时间,它的单位常常以s或者ms为主。它是以某个请求为对象的,因此请求的大小以及复杂程度直接影响到响应时间的长短。
这里提到一个概念是“排队论”(http://en.wikipedia.org/wiki/Queuing_theory), 在计算机系统中,这个概念是最常见的,了解排队理论对于我们理解吞吐量和响应时间的关系以及区别很有帮助!
通常,平均响应时间越短,系统吞吐量越大;平均响应时间越长,系统吞吐量越小;
但是,系统吞吐量越大, 未必平均响应时间越短;因为在某些情况(例如,不增加任何硬件配置)吞吐量的增大,有时会把平均响应时间作为牺牲,来换取一段时间处理更多的请求。
一个例子,比如一个理发店,原先只有一个理发师,因为穷,只买的一张理发椅子,和一个长凳用来方便等待的人休息。理发师一次只能处理一个客户,其他等待的用户显得很不耐烦,外面打算进来理发的人也放弃了这家店理发的打算。。。
有一天,理发师有钱了,他多买了2个理发椅子,这样,他可以同时给3个人理发,当其中一个人理到一定阶段需要调整或者定型的时候,他就转到另外一个客户去修剪头发,依次类推,这样,他发现一天他可以理的人数比以前增多了,但是还会有一些后来的客户抱怨等待时间太长。
后来,理发师打算招聘2名学徒帮助他一起干活,这样,他发现每天的理发效率增加了将近2倍,而且客户的等待时间明显也减少了许多。但是成本增多了,理发用具,洗发水,发工资,这让他觉得开个理发店也要精打细算:)