软件系统性能常识

2023-05-16

不管是系统设计人员、开发人员还是测试人员,要构建高性能的系统,对于系统性能的一些常用术语都不了解,那是无从做起的,这里主要介绍几个软件性能指标的术语及计算方法,便以在性能优化及性能评判时有的放矢:


目录

 

1.响应时间

2.并发用户

3.吞吐量

4.思考时间


1.响应时间

     响应时间是系统对用户请求作出响应的时间,响应时间是用户对系统性能最直观的感受,因此直接表现了系统的性能。影响系统响应时间的因素主要有以下几个:

    1) 网络传输时间:包含请求信息传送致服务器、服务器信息返回用户等时间计为NT

    2)应用服务器处理时间:服务器响应用户请求,封装数据并发出,计为AT 

    3)数据库服务器处理时间:数据库数据操作执行及返回服务器时间。计为DT

    响应时间=NT+AT+DT,由此我们可以看出,响应时间受到多个方面的影响,这些因素的时间都与初始数据量有较大的影响,因此在系统开发及测试过程中,合适的初始化数据非常重要。同时,单用户情况下与并发用户的响应时间通常会有较大差异,合适的并发用户也是必要的。

2.并发用户

    1)系统用户数:系统额定的用户数量,如一个系统中,可能使用该系统的用户总数是2万个,那么这个数量,就是系统用户数。

    2)同时在线用户数:在一定的时间范围内,最大的同时在线用户数量,也就是高峰在线用户数。

    3)平均并发用户数的计算:C=nL / T,其中C是平均的并发用户数,n是平均每天访问用户数,L是一天内用户从登录到退出的平均时间(操作平均时间),T是考察时间长度(一天内多长时间有用户使用系统)。

    4)并发用户数峰值计算:C^约等于C + 3*根号C,其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论。

    通过以上公式,可以计算出系统应该能够承受的平均并发用户数及并发峰值,在系统架构设计及研发、测试过程中,务必保证系统能够在高峰并发情况下性能表现达到用户需求。

3.吞吐量

   系统吞吐量是指指单位时间内系统处理用户的请求数

    1)从业务角度看,吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量

    2)从网络角度看,吞吐量可以用:字节/秒来衡量

    对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能够说明系统的负载能力以不同方式表达的吞吐量可以说明不同层次的问题,例如,以字节数/秒方式可以表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈;已请求数/秒的方式表示主要是受应用服务器和应用代码的制约体现出的瓶颈。当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU * R / T,其中F为吞吐量,VU表示虚拟用户个数,R表示每个虚拟用户发出的请求数,T表示性能测试所用的时间。

    在以往的应用中,对于系统吞吐量,我们更多关注于字节/秒指标,但这块只体现了一个方面的系统吞吐量。对于业务操作而言,F=VU * R / T更有意义,这块吞吐量指标设计应当在每个特定的应用功能级别进行设计与测试。

4.思考时间

    Think Time,从业务角度来看,这个时间指用户进行操作时每个请求之间的时间间隔,而在做性能测试时,为了模拟这样的时间间隔,引入了思考时间这个概念,来更加真实的模拟用户的操作。在吞吐量这个公式中F=VU * R / T说明吞吐量F是VU数量、每个用户发出的请求数R和时间T的函数,而其中的R又可以用时间T和用户思考时间TS来计算:R = T / TS,一般情况下,按如下步骤计算思考时间:

A、首先计算出系统的并发用户数:C=nL / T     F=R×C

B、统计出系统平均的吞吐量:F=VU * R / T R×C = VU * R / T

C、统计出平均每个用户发出的请求数量:R=u*C*T/VU

D、根据公式计算出思考时间:TS=T/R

 

    通常情况下,以上这些指标只是测试人员熟悉,但如果要构建一个高性能的系统,在设计之初就应当将这些指标做为系统的一个核心非功能特性写入设计文档并贯彻在开发执行过程中,这样才能予以系统性能稳固保障,因此,不管是系统设计人员、开发人员还是测试人员,都应当对这些指标非常熟悉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件系统性能常识 的相关文章

  • leetcode刷题5/29

    面试题24 反转链表 难度简单42 定义一个函数 xff0c 输入一个链表的头节点 xff0c 反转该链表并输出反转后链表的头节点 示例 输入 1 gt 2 gt 3 gt 4 gt 5 gt NULL 输出 5 gt 4 gt 3 gt
  • 浅谈单例模式 又叫对象性能模式

    对象性能模式 面向对象很好地解决抽象的问题 xff0c 但是必不可免地要付出一些代价 xff0c 对于通常情况来讲 xff0c 面向对象的成本大都可以忽略不计 xff0c 但是某些情况 xff0c 面向对象所带来的的成本必须谨慎处理 经典模
  • 清华大学研究成果:如何用博弈论解决自动驾驶路口的会车决策问题?

    雷锋网新智驾按 xff1a 4月24日 xff0c 雷锋网新智驾联合MMC在2017年上海车展举办 构建智能驾驶的关键 主题沙龙 xff0c 本文来自清华大学自动化系统工程研究所教授姚丹亚的分享 本文讲述了V2X技术在自动驾驶中的一个重要应
  • Sonarqube集成到Jenkins实现代码自动检测

    如何使用Sonar把不同的代码检查工具结果直接显示在WEB页面上 xff1f xff1f 详细实操如下 xff1a 需要配置 Sonarqube服务端 xff1a 192 168 10 12Sonarqube客户端postgres 数据库
  • 车路协调系统图

  • c++ 两个vector之间相互赋值,或在一个后面追加另一个

    方法1 xff1a vector lt int gt v1 v2 声明 方法2 xff1a vector lt int gt v1 v1 swap v2 将两个容器内的元素交换 需要构建临时对象 xff0c 一个拷贝构造 xff0c 两次赋
  • 6月8 力扣 回文数和验证回文串

    9 回文数 难度简单1057收藏分享切换为英文关注反馈 判断一个整数是否是回文数 回文数是指正序 xff08 从左向右 xff09 和倒序 xff08 从右向左 xff09 读都是一样的整数 示例 1 输入 121 输出 true 示例 2
  • C++11 并发指南一(C++11 多线程初探)

    相信 Linux 程序员都用过 Pthread 但有了 C 43 43 11 的 std thread 以后 xff0c 你可以在语言层面编写多线程程序了 xff0c 直接的好处就是多线程程序的可移植性得到了很大的提高 xff0c 所以作为
  • 二分搜索binary search和贪婪算法

    二分搜索binary search 定义 xff1a 二分搜索也称折半搜索 xff0c 是一种在有序数组中查找某一特定元素的搜索算法 运用前提 xff1a 必须是排好序的 输入并不一定是数组 xff0c 也可能是给定一个区间和终止的位置 优
  • 面试题52. 两个链表的第一个公共节点

    面试题52 两个链表的第一个公共节点 难度简单51收藏分享切换为英文关注反馈 输入两个链表 xff0c 找出它们的第一个公共节点 如下面的两个链表 xff1a 在节点 c1 开始相交 示例 1 xff1a 输入 xff1a intersec
  • 求解两个字符串的最长公共子序列

    一 xff0c 问题描述 给定两个字符串 xff0c 求解这两个字符串的最长公共子序列 xff08 Longest Common Sequence xff09 比如字符串1 xff1a BDCABA xff1b 字符串2 xff1a ABC
  • leetcode刷题6.16 树的层序遍历,树的序列化

    给你一个二叉树 xff0c 请你返回其按 层序遍历 得到的节点值 xff08 即逐层地 xff0c 从左到右访问所有节点 xff09 示例 xff1a 二叉树 xff1a 3 9 20 null null 15 7 3 9 20 15 7
  • 深度优先及广度优先算法

    深度优先搜索算法DFS 广度优先搜索算法BFS 在猪呢个算法知识点中占比非常大 xff0c 应用最多的地方是对图进行遍历 xff08 树以为是图的一种 xff09 深度优先搜索算法DFS DFS解决的 是连通性的问题 xff0c 及给定两个
  • 厄拉多塞筛法 快速求质数 /回文子串

    西元前250年 xff0c 希腊数学家厄拉多塞 Eeatosthese 想到了一个非常美妙的质数筛法 xff0c 减少了逐一检查每个数的的步骤 xff0c 可以比较简单的从一大堆数字之中 xff0c 筛选出质数来 xff0c 这方法被称作厄
  • Docker部署Sonarqube

    1 下载镜像 docker pull registry span class token punctuation span cn span class token operator span shenzhen span class toke
  • leetcode刷题 旋转链表

    92 反转链表 II 难度中等393 反转从位置 m 到 n 的链表 请使用一趟扫描完成反转 说明 1 m n 链表长度 示例 输入 1 gt 2 gt 3 gt 4 gt 5 gt NULL m 61 2 n 61 4 输出 1 gt 4
  • 分布式实时处理系统——C++高性能编程 RAII resource acquisition is initialization

    分布式实时处理系统 C 43 43 高性能编程 前言 基于通信基础 xff0c 介绍Hurricane实时处理系统的工程实现 xff0c 主要使用C 43 43 语言 一 IPC socket 异步I O epoll 二 C 43 43 1
  • 6月21 刷题思考

    1 RALL相关知识点 2 std set的使用 xff1f xff1f 不熟练 3 一个无序整数数组中找到最长连续序列 4 Two Sum 问题 Data structure design 5 i 43 43 在两个线程里边分别执行100
  • V2X就是Vehicle To Everything 国标中有五种消息BSM、RSI、RSM、SPAT、MAP

    前面讲到V2X就是Vehicle To Everything xff0c 即车队外界所有信息的交换 xff0c 这里的X代表Everything xff0c 在V2X概念中 xff0c 我们将它看作四大部分 xff0c 车与车通信 xff0

随机推荐

  • 6月23 leetcode 二进制求和

    67 二进制求和 难度简单404收藏分享切换为英文关注反馈 给你两个二进制字符串 xff0c 返回它们的和 xff08 用二进制表示 xff09 输入为 非空 字符串且只包含数字 1 和 0 示例 1 输入 a 61 34 11 34 b
  • 利用栈实现树的中序遍历

    94 二叉树的中序遍历 难度中等537收藏分享切换为英文关注反馈 给定一个二叉树 xff0c 返回它的中序 遍历 示例 输入 1 null 2 3 1 2 3 输出 1 3 2 进阶 递归算法很简单 xff0c 你可以通过迭代算法完成吗 x
  • STL中的set详解

    1 关于set C 43 43 STL 之所以得到广泛的赞誉 xff0c 也被很多人使用 xff0c 不只是提供了像vector string list等方便的容器 xff0c 更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构
  • 你真的了解二分查找吗?

    传统的二分查找算法 提到二分查找 xff0c 相信很多人都不陌生 xff0c 大学学数据结构的时候老师都讲过 xff0c 它是一种效率较高的查找方法 xff0c 基于顺序存储结构的线性表 xff0c 且要求表中元素按关键字有序排列 假设元素
  • 二叉树DFS/BFS实现(C++)

    深度优先搜索算法 xff08 Depth First Search xff09 DFS是搜索算法的一种 它沿着树的深度遍历树的节点 xff0c 尽可能深的搜索树的分支 当节点v的所有边都己被探寻过 xff0c 搜索将回溯到发现节点v的那条边
  • 当TCP建立连接过程中出现问题了,如何检查?

    netstat命令 stat状态说明 TCP协议规定 xff0c 对于已经建立的连接 xff0c 网络双方要进行四次握手才能成功断开连接 xff0c 如果缺少了其中某个步骤 xff0c 将会使连接处于假死状态 xff0c 连接本身占用的资源
  • 本地服务器上传代码到gitee仓库

    把gitlab仓库里的node day01项目传到本地服务器 再把本地服务器里的node day01项目传到Gitee代码仓库 1 登录Gitlab xff0c 复制代码仓库地址 2 拷贝一刚复制的Git 仓库到本地 root 64 ubu
  • 牛客网刷刷刷刷

    作者 xff1a 故事的小黄瓜 链接 xff1a https www nowcoder com discuss 436386 来源 xff1a 牛客网 1 xff0e 线程池如何开启一个新线程 xff1f 2 xff0e 线程池初始化的步骤
  • c++ 后端linux开发常见问题

    计算机操作系统 xff08 Linux xff09 命令 xff1a netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟
  • STL c++ 使用小结

    各位看官 xff0c 欢迎来到趁热搬砖小码农的博客 在写C 43 43 程序的时候会发现STL是一个不错的东西 xff0c 减少了代码量 xff0c 使代码的复用率大大提高 xff0c 减轻了程序猿的负担 还有一个就是容器 xff0c 你会
  • Oracle面试题,带答案!

    1 你要对操纵Oracle数据库中的数据 下列哪个选项表示Oracle中select语句的功能 xff0c 并且不需要使用子查询 xff08 C xff09 A xff0e 可以用select语句改变Oracle中的数据 B xff0e 可
  • 什么是进程?什么是线程?总结

    1 什么是进程 xff1f 什么是线程 xff1f 进程是表示资源分配的基本单位 xff0c 又是调度运行的基本单位 例如 xff0c 用户运行自己的程序 xff0c 系统就创建一个进程 xff0c 并为它分配资源 xff0c 包括各种表格
  • C++知识点小结(趁热搬砖三年半的小码农) 2020年07月2日整理

    c 43 43 最好用易用的新特性 xff1a auto decltype https blog csdn net zyc2018 article details 93591189nullptr range forusing c 43 43
  • 如何定位内存泄漏问题

    如何定位内存泄漏问题 Things You 39 ll Need Proficiency in C 43 43 C 43 43 compilerDebugger and other investigative software tools
  • C++之future和promise

    C 43 43 之future和promise future和promise的作用是在不同线程之间传递数据 使用指针也可以完成数据的传递 xff0c 但是指针非常危险 xff0c 因为互斥量不能阻止指针的访问 xff1b 而且指针的方式传递
  • linux常用小知识点

    答案linux考试题 1 在登录Linux时 xff0c 一个具有唯一进程ID号的shell将被调用 xff0c 这个ID是什么 b A NID B PID C UID C CID 答 xff1a w命令查看用户tty终端信息 ps ef
  • 无锁编程基础

    背景 我们处在技术快速发展的时代 xff0c 竞争变得前所未有的激烈 xff0c 不仅要十八般武艺俱全 xff0c 还得选对正确的技术 xff0c 跟上发展的脚步 xff0c 并贴上精研某个专业方向的标签 我们不仅要面对多线程和并发 xff
  • Linux网络相关概念和修改IP地址的方法

    网卡的命名规则 ifconfig xff1a 用于显示或设置网络设备 ens32 span class token punctuation span flags span class token operator 61 span span
  • 二维坦克大战游戏代码开发

    这是我实际面试中 xff0c 遇到的一个题目 xff0c 编写一个坦克大战游戏 一开始感觉懵 xff0c 后来代码写写就好了 include lt iostream gt include lt stdlib h gt include lt
  • 软件系统性能常识

    不管是系统设计人员 开发人员还是测试人员 xff0c 要构建高性能的系统 xff0c 对于系统性能的一些常用术语都不了解 xff0c 那是无从做起的 xff0c 这里主要介绍几个软件性能指标的术语及计算方法 xff0c 便以在性能优化及性能