写点什么

如何定义性能需求

  • 2015-02-03
  • 本文字数:1000 字

    阅读完需:约 3 分钟

JVM 监控解决方案提供商 Plumbr 的官方博客上发表了一篇题为《如何定义性能需求》的文章。文章指出,随着企业信息化程度的提高,业务人员对软件功能性需求的描述越来越好。但涉及到易用性、兼容性或性能等非功能性需求的时候,他们经常会不得要领。比如,他们可能会提出“它的运行速度要快”这样的性能需求。在更好的情况下,他们可能会提出下面这样的性能需求:

  • 在系统中执行的操作,95% 的都必须在 5 秒针内响应;
  • 系统必须支持 100 并发用户。

初看上去,这样的需求已经好了很多了。但实际上,它们甚至比只用一个“快”字描述更差。虽然它们包含了一些数字,看上去似乎可以作为开发人员的终极目标。但实际上,这两个需求最多只能为关于性能需求的讨论开一个头。

文章接下来对上述两个需求进行了剖析。

第一个需求没有提出针对其它 5% 的操作的性能需求。而且,不同的功能对性能的需求也不尽相同。比如,对于功能“显示当前账户余额”和“显示 2013 年所有的交易”,前者 5 秒响应可能都略显慢,而后者响应时间再长一些也可以接受。因此,性能需求描述应该:

  • 针对不同的操作类型指定可接受的时间延迟;
  • 将时间延迟相关的需求与负载 / 吞吐量相关的需求联系起来;
  • 明确时间延迟的测量位置,比如,延迟时间是以客户端为标准,还是以服务器端发送出最后一个字节为标准;
  • 哪些操作的时间延迟不太要紧。

第二个需求看上去很准确,实际上很笼统。比如,将“100 个并发用户”理解成“100 个线程处理 100 个并发操作”。如果每个操作用时 1 秒,那么系统吞吐量为 100 ops/sec;但如果每个操作用时 10 秒,那么系统吞吐量则只有 10 ops/sec。对于后一种情况,我们不能认为它满足“100 个并发用户”的需求。因此,需求应该更清楚地描述特定用户的行为,而不是用“并发用户”这样的术语。当然,这里并不是说建议测量吞吐量,因为现实世界的应用程序往往是多功能的,很难使用吞吐量来衡量其性能。

本文还提到了容量规划,即在什么样的前提条件下实现上述性能需求,包括如下三个方面:

  • 系统的数据量;
  • 系统的基础设施限制,比如,CPU、内存等;
  • 系统的部署环境,比如,网络带宽是多少,是否需要离线操作等。

总之,应该与业务人员紧密合作,制定出可测量的、具体的性能需求。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-03 07:339199
用户头像

发布了 1008 篇内容, 共 402.1 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

Python 中的字符串基础与应用

小万哥

Python 开源 程序员 后端 开发

NFT 智能合约开发搭建

V\TG【ch3nguang】

我来聊聊面向组件的前端开发

欧雷

软件工程 前端开发 前端架构 组件化 前端工程化

HarmonyOS人才赋能交流会落地济南,共筑繁荣鸿蒙生态

最新动态

一场不发手机的发布会,一场沉默且浩瀚的远征

脑极体

手机

【实践案例】软件差异化升级——吃包篇

golf

golang 后端 升级 吃包 差异化

区块链dapp定制开发 dapp智能合约开发 dapp系统定制开发 去中心化dapp开发

V\TG【ch3nguang】

华为校园公开课|哈尔滨工业大学(威海)圆满收官

最新动态

【玩转 EdgeOne】边缘行者,速必达

指剑

腾讯云 CDN EdgeOne

ipaguard界面概览

零基础Python经验体验代码检查工具

华为云PaaS服务小智

云计算 华为云 代码检查

【中秋国庆不断更】XML在HarmonyOS中的生成,解析与转换(上)

HarmonyOS开发者

Web3新手、DeFi爱好者和资深用户的钱包首选

大瞿科技

基于云原生的集群自愈系统 Flink Cluster Inspector

Apache Flink

大数据 flink 实时计算

【AI产品】Podwise:AI助我听播客

无人之路

AI 播客 技术播客

三地五中心,TiDB POC最佳姿势探索

TiDB 社区干货传送门

7.x 实践

三力四总线,为智能世界画一张蓝图

脑极体

华为

【中秋国庆不断更】OpenHarmony定义扩展组件样式:@Extend装饰器

OpenHarmony开发者

OpenHarmony

专访中欧财富伍春兰:财富管理行业数字化转型升级,数据库如何选型?

TiDB 社区干货传送门

实践案例 数据库架构选型

商业版 Plus '遥遥领先' | 相约10月

开源物联卡管理平台-设备管理

物联网 IoT 国际化 物联网应用 国产开源

政务与大模型,在国云上相遇

脑极体

云计算

采用get()和put()读写文件

芯动大师

c++

软件差异化升级——差量包篇

golf

golang 后端 升级 差量包

如何搭建一个专属的认证中心(一)

Kevin_913

spring security OAuth 2.0 java 架构

03. 人工智能核心基础 - 导论(2)

茶桁

人工智能 方法论 问题范式

【运维实操】TIDB v6.1.1:全量备份、全量恢复和增量备份方法解析

TiDB 社区干货传送门

实践案例 安装 & 部署 备份 & 恢复

哪家强?Bitget Wallet vs Metamask 从安全性能角度全方位 PK!

股市老人

智能合约dapp开发 dapp定制开发

V\TG【ch3nguang】

使用 AI 编程助手 CodeWhisperer,开发如有神助

亚马逊云科技 (Amazon Web Services)

人工智能 亚马逊云科技

幸福城市平台:数据库选型与优化实践

TiDB 社区干货传送门

数据库架构选型

如何定义性能需求_JVM_谢丽_InfoQ精选文章