AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

如何定义性能需求

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

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

关注

评论

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

Python协程 & 异步编程(asyncio) 入门介绍

行者AI

#python

从特斯拉召回事件,窥探OTA汽车进化真面目

脑极体

【Flutter 专题】97 仿网易新闻标签选择器

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

如何实现跨设备的双向连接? Labo涂鸦鸿蒙亲子版分布式开发技术分享

科技汇

Ubuntu 如何强制时间同步

HoneyMoose

为什么AI需要大大大大大模型?

脑极体

架构实战营模块7作业

Vic

架构实战营

国内市场主流音视频产品主要功能分析

anyRTC开发者

音视频 WebRTC 语音通话 实时通讯 视频通话

CVPR2021竞赛结果出炉,阿里淘系多媒体算法包揽3项国际冠军

阿里巴巴大淘宝技术

CVPR

AQS介绍和原理分析(下)

追风少年

并发编程 AQS

Linux之which命令

入门小站

Linux

在线HTML转JS/JSON工具

入门小站

工具

科创人|容联七陌CEO陈光:90后街舞少年的CEO修炼手册

科创人

人工智能 创业 程序员

Flink知识点总结

五分钟学大数据

flink 7月日更

网络攻防学习笔记 Day62

穿过生命散发芬芳

网络攻防 7月日更

一文看懂 Context

Rayjun

Go 语言

08 | 指针系列(二):记住,指针变量也是变量(2)

Nydia

免费分享入门学习Java的优秀图书

Java入门到架构

Java 书籍 Java入门

模块1

cherrycheek

为什么AI需要大大大大大模型?

白洞计划

iOS 15隐私升级及注意事项

阿里巴巴大淘宝技术

ios WWDC21

新能源车的发展趋势

石云升

学习 新能源汽车 7月日更

云原生负载均衡和网关应用实践

火山引擎开发者社区

云原生 后端

2022秋春招/提前批面经分享总结(字节、腾讯、阿里)

学无止境的阿奔

腾讯 面试 阿里 字节 校招

什么是数据仓库

奔向架构师

数据库 数据仓库 数据架构 话题讨论 7月日更

Linux常用命令-文件操作

正向成长

linux命令

花2个月备战字节,3轮面试拿下总包60W Offer!

Java架构师迁哥

大专的我,闭关苦学56天,含泪拿下阿里offer,五轮面试,六个小时灵魂拷问

Java架构师迁哥

利用 IComparable<T> 以及 IComparer<T> 定义顺序关系

喵叔

7月日更

将 FeignClient 的请求记录成 cURL 格式

哈德韦

微服务 前后端分离 log4j curl Spring boot Feign

全表遍历并处理数据有点慢?放开!我来!

林一

jpa Stram @QueryHints

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