性能的一些基本概念和原则

标签: 性能 概念 原则 | 发表时间:2015-03-17 17:25 | 作者:草料场
出处:http://www.iteye.com

参考: 《Thinking Clearly about Performance》

 

两个指标

响应时间:执行一个任务所耗费的时间

吞吐量:在指定的单位时间内执行任务的个数

 

 

响应时间和吞吐量“一般”是倒数关系

(真实关系比较复杂)

> 如果每秒吞吐量是1000,平均响应时间不一定是0.001秒。因为可能是有1000个并行通道,每个通道执行一个任务,响应时间是1秒。

 

> 如果响应时间是0.001秒,每秒吞吐量有可能100都达不到。因为请求可能来自不同的用户,请求之间不是完美连续的,可能有资源竞争等各种原因。

 

所以 两者都得测量

 

 

平均响应时间并不能说明一切

平均值相同的情况下:

> 如果各响应时间相差较大(方差大),可能会导致业务无法容忍那些大于平均值的时长。

 

> 但也有可能业务要求某些任务的响应时间极短,同时容许个别任务可以稍微花费较长时间。

 

问题诊断

首先确定具体期望达到的性能目标,确定这个目标是用户真实了解并期望的。

> 用序列图展示流程

 

> 使用专业的测量评估工具(Profiler),找出时间花在哪部分,哪部分的耗时可以接受。根据 Profiler 的结果,估算应该能达到的性能目标。

- 阿姆达尔定律

系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。

 

- 评估每项改进所需成本。评估可能会不准确,可能会有一些关键点未考虑到,可能破坏原有设计,引发其它部分的性能问题。

 

- 记录改进的历史。包括期望效果,实际结果等。

 

- 单个子程序在不同场景性能表现分布不均匀。对某些被大量调用的子程序进行改造不一定能获得预期效果。可能单次调用耗时可以减少一半,但由于每次调用情况可能相差很大,这些调用的总体耗时并不一定能减少一半。

 

- 效率

* 关注业务最需要改进的地方。

* 在不牺牲业务功能的情况下,去掉冗余的操作/调用。

* 改进程序周边的环境(不合理的设计、硬件配置等)。(必要时减少系统工作量)

- 负载

(开发人员不能检测出所有性能问题的原因之一)

* Queuing Delay

各硬件(CPU、内存、磁盘等)有各自的性能拐点。

* Coherency Delay

为保持一致性引发的延迟,包括各种锁。(很难保证性能测试已验证该类延迟不会影响最终服务。)

 

 

测量方法

(吞吐量比较容易测得,准确测得响应时间比较困难。)

最好是测量真正需要的,而不是那些容易测量的替代数据。

 

 

性能只有在产品环境里才能真正体现

之前的阶段应该考虑到是否容易开展性能测试,添加收集性能相关数据的代码。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [性能 概念 原则] 推荐:

性能的一些基本概念和原则

- - 研发管理 - ITeye博客
参考: 《Thinking Clearly about Performance》. 响应时间:执行一个任务所耗费的时间. 吞吐量:在指定的单位时间内执行任务的个数. 响应时间和吞吐量“一般”是倒数关系. > 如果每秒吞吐量是1000,平均响应时间不一定是0.001秒. 因为可能是有1000个并行通道,每个通道执行一个任务,响应时间是1秒.

MySql性能相关的一些概念(性能tip0)

- - BlogJava-首页技术区
题首:这是最近读《高性能MySqL 第二版》记录下来的东西~. #读锁(共享锁)、写锁(排他锁):读锁是共享的,互不阻塞,读取同一资源互不影响;写锁排他,一个写锁会阻塞其他的读写操作. #锁定对象的粒度:表锁和行锁. 表锁:整个表加锁,当写操作时,加写锁,资源访问排他. 当没有写时,加读锁,读锁互不冲突.

性能测试的主要概念和计算公式[转]

- - 企业架构 - ITeye博客
PS:下面是性能测试的主要概念和计算公式,记录下:.   一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联. 单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高. 系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间.

系统吞吐量(TPS)、用户并发量、性能测试概念和公式

- - 服务器运维与网站架构|Linux运维|X研究
PS:下面是性能测试的主要概念和计算公式,记录下:.   一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联. 单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高. 系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间.

Linux性能分析和调整的基本原则 --zt

- flychen50 - DBA eyes
优化linux系统需要考虑多方面的因素,因为各个因素之间相互关联,因此遇到性能问题以及性能的调节需要综合考虑,基本要素考虑与分析:. 3)对磁盘进行优化(包括文件系统),提高I/O吞吐量;. 2,影响系统性能的一般因素:. 一般来说,现在的网络服务器针对提供的服务,其CPU速度是足够提供处理能力的;所以.

小规模低性能低流量网站设计原则

- Specific - DBA Notes
作者:Fenng 发布在 dbanotes.net. 到处都是什么大规模啊,高流量啊,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳大爷也说过,"过早优化是万恶之源"),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何搞法.

SQL Server 查询性能优化——创建索引原则(一)

- - 博客园_首页
索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以. 但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好. 索引建少了,用WHERE子句找数据效率低,不利于查找数据. 索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQL SERVER除了要更新数据表本身,还要连带地立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间.

成为Java GC专家(5)—Java性能调优原则

- - ImportNew
这是“ 成为Java GC专家”系列的第五篇文章. 在第一篇 深入浅出Java垃圾回收机制中,我们已经学习了不同的GC算法流程、GC的工作原理、新生代(Young Generation)和老年代(Old Generation)的概念. 你应该了解了JDK7中5种GC类型以及各种类型对应用程序的影响.

raid概念

- - CSDN博客系统运维推荐文章
有时候对raid有点含糊不清,特别从网上找了一些资料总结一下. RAID通过在多个磁盘上同时存储和读取数据来大幅提高 存储系统的数据 吞吐量(Throughput). 在RAID中,可以让很多磁盘 驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率.

Stom概念

- - 开源软件 - ITeye博客
自己实现一个实时计算系统要考虑哪些问题. 1.低延迟、高性能、分布式(单机已无法满足要求)、可扩展、容错. 2.容易在上面开发应用程序,消息不丢失败、消息严格有序. 1.简单的编程模型 类似于MapReduce的Spout/Bolt. 2.是一个服务框架,支持热部署,及时上线下线App. 3.可以使用多种编程语言(Clojure,java,Ruby,Python).