【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

如何定义性能需求

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

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

关注

评论

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

模块三作业-学生管理系统架构文档

曾竞超

架构实战营 「架构实战营」

谨防做 Yes Man

搬砖的周狮傅

管理 思考

所谓默契,最不靠谱(25/28)

赵新龙

28天写作

2021年终总结:30多岁依然没有放弃自我成长!

王磊

语音信号数字化

轻口味

28天写作 12月日更

24《重学JAVA》--多线程(一)

杨鹏Geek

Java25周年 28天写作 12月日更

元宇宙100讲-0x008

hackstoic

元宇宙

如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查

Jerry Wang

HTTP fiddler 28天写作 网络抓包 12月日更

失败与成功是一体两面

石云升

学习笔记 28天写作 12月日更

55 K8S之Prometheus监控步骤

穿过生命散发芬芳

k8s 28天写作 12月日更

收藏GitHub上的7个热门TypeScript项目

devpoint

typescript Grafana Storybook 12月日更

使用 RED 方法分析服务的瓶颈

耳东@Erdong

28天写作 12月日更 RED 方法

Code Review全面审查清单

俞凡

Code Review 生产力

Golang中不一样的switch用法

liuzhen007

28天写作 12月日更

华为技术专家深度解析Redis惰性删除原理

JavaEdge

12月日更

疫情下的圣诞节

张老蔫

28天写作

VUE 3.0 源码 rollup.config.js 对不同类型输出文件的注释

老罗

VUE 3.0 源码解析

Linux 命令 man 全知全会

hedzr

Linux less man man-pages

再论学习

将军-技术演讲力教练

第三周作业

lv

通过ip查询域名信息

喀拉峻

网络安全 渗透测试·

宏昆酒店集团携手DataPipeline打造实时数据融合平台,酒店业精益管理的新秘诀

DataPipeline数见科技

数据库 中间件 数据同步 数据融合 数据管理

面试高频考点:hashCode与equals

xcbeyond

Java equals vs hashcode 28天写作 12月日更

🍃【Spring专题】「开发实战」Spring Security与JWT实现权限管控以及登录认证指南

洛神灬殇

spring spring security springsecurity 12月日更

Gin-Vue-Admin 使用 gin+vue 进行极速开发的全栈开发基础平台【gva 第二节】

坚果

28天写作 Vue 3 Go 语言 12月日更

模块八-设计消息队列存储消息数据的 MySQL 表格

deng

架构实战营

PassJava 开源 (七) :Spring Cloud 整合 OpenFeign 实现声明式远程调用

悟空聊架构

28天写作 passjava 悟空聊架构 12月日更 openfeign

.NET6新东西--PriorityQueue

喵叔

28天写作 12月日更

Velocity.js:一个简单易用、高性能、功能丰富的轻量级JS动画库

devpoint

Vue3 vuex 12月日更 Velocity.js

架构训练营 week3 学习总结

红莲疾风

「架构实战营」

元宇宙100讲-0x009

hackstoic

元宇宙

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