把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

如何定义性能需求

  • 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:339590
用户头像

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

关注

评论

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

全网通用Python点赞器(俗称刷分机器),想知道原理吗?看完本文你自己也能写个

梦想橡皮擦

9月日更

Chrome浏览器控制台支持中文

FunTester

chrome 浏览器 控制台 FunTester 中文

Intel高管披露Arc显卡合作厂商?官方否认

科技新消息

送你一个Python 数据排序的好方法

华为云开发者联盟

Python 数据分析 数据排序

【墨天轮专访第五期】偶数科技常雷:创新改变世界,深耕云数据仓库

墨天轮

数据库 国产数据库

多租户是什么意思?怎么理解?

行云管家

云计算 运维 SaaS

Linux用户/用户组编辑

在即

9月日更

华为云GaussDB(for MySQL)2.0全新升级,三大技术大揭秘

华为云开发者联盟

数据库 云原生 GaussDB GaussDB(for MySQL) 华为全联接2021

Flutter 对状态管理的认知与思考

小呆呆666

flutter ios android 大前端 dart

一文教你如何落地spring cloud alibaba企业级架构

小鲍侃java

后端 引航计划

Python代码阅读(第28篇):计算列表中位数

Felix

Python 编程 Code Programing 阅读代码

考试系统高并发试卷存储设计方案

Imaginary

等保是强制的吗?企业不办等保有啥处罚?

行云管家

网络安全 等保 等保2.0

“智感超清”之HDR技术落地实践

百度开发者中心

最佳实践 音视频

Prometheus 2.27.0 新特性

耳东@Erdong

release Prometheus 9月日更

从敏捷开发到全自动开发,加速实现企业数字化转型

飞算JavaAI开发助手

书单 | 带你轻松度假的10本好书!

博文视点Broadview

如何实现一款毫秒级实时数据分析引擎

Shopee技术团队

大数据 数据分析 后端 HBase

一张图读懂Z-ONE Studio Lite

SOA开发者平台

Redis可观测最佳实践,5大关键指标最全解析!

观测云

redis

一张图读懂Z-ONE Studio Lite

SOA开发者

Go 中五个常见错误

baiyutang

golang 9月日更

华为云开天aPaaS 上线,服务千万开发者,使能行业场景化创新

华为云开发者联盟

华为云 企业应用 开天aPaaS aPaaS 华为云生态

【存储专栏】打破K/V存储的性能瓶颈

趣链科技

区块链 存储

浏览器测试的三大挑战及解决方案【译】

FunTester

软件测试 测试 FunTester 兼容性测试 浏览器测试

一张图读懂Z-ONE Digital Car

SOA开发者平台

Intel要跟华硕等OEM品牌推出DG2显卡?官方:消息不属实

科技新消息

Java变异出现错误:No enclosing instance of type XXX is accessible

华为云开发者联盟

Java

滴滴 x StarRocks:极速多维分析创造更大的业务价值

StarRocks

数据库 数据分析 滴滴 Clickhouse StarRocks

在线Emoji符号大全

入门小站

工具

你知道怎么离线安装全局 node 模块吗?

编程三昧

大前端 npm Node 离线包 9月日更

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