性能测试 - 响应 vs 延迟 vs 吞吐量 vs 负载 vs 扩展性 vs 压力 vs 健壮性
本文译自Niraj Bhatt 所著 Performance Testing - Response vs. Latency vs. Throughput vs. Load vs. Scalability vs. Stress vs. Stress vs. Robustness. 原文地址:https://nirajrules.wordpress.com/2009/09/17/measuring-performance-response-vs-latency-vs-throughput-vs-load-vs-scalability-vs-stress-vs-robustness/
通常我发现当人们谈起性能测试时,总是含混不清及概念混淆的。一些人仅仅把性能测试限制在响应时间,反之,另一些人则试图用性能测试来覆盖测试活动的各个方面。 在这篇博文中,有关这两种看法之间的区别,我将阐述一些自己的观点。在性能测试领域,你会经常听到的一些名词有——响应时间,延迟时间,吞吐量,负载,扩展性,压力,健壮性等等。在下面的文章中,我会试着解释这些名词同时简要介绍如何测量评估他们。
响应时间(Response Time)——系统在接受到一个请求后,处理这个请求所需要花费的时间。比如你有一个API,你想知道这个API执行一次调用需要花费多少时间,你事实上就是在测量响应时间。 那么到底怎么测量响应时间呢?简单来说,使用一个码表(System.Diagnostics)——在调用之前启动它,在接收到响应后停止。这里的时间间隔将会非常小,所以推荐的做法是循环调用这个API,比如说1000次。 或者如果可能的话在调用时传入负载参数(输入/输出 有KBs/MBs/GBs之分。比如,返回不同长度的用户数组)
延迟时间(Latency)——最简单的解释是,它是远程调用时的响应时间,例如你想访问的是一个网络服务或一张网页。 除了服务器需要的处理响应的时间外,还需要耽搁一些时间用来将请求从客户端传到服务器。那么说到延迟时间,就是刚刚说到的耽搁的时间。而这对于托管网络服务/网页 的远程数据中心来说,是一个很大的问题。想象一下你从印度访问一个在美国的数据中心。尽管延迟时间是很难被改进缩短的,但是测量它却非常之重要。我们怎么来测量延迟时间? 一些模拟网络条件的工具可以帮助你,这里是其中一个工具。
吞吐量(Thoughput)——你的应用/系统每秒钟能处理的事务数。一个典型的企业级应用会有很多用户执行各种不同的事务。在系统正式投入使用之前,你应该保证自己的系统达到企业级应用所要求的能力。这种情况下,负载测试(Load Testing)可视为一个解决方案。策略是,挑选一些事务(时常发生的,重要的,密集发生的)看看在SLAs(Service Level Agreement—服务提供商和终端用户之间一个服务级别的合约。用来定义期望从服务提供商处得到的服务等级)允许的时间范围内的通过率是多少。怎么来衡量呢?你通常需要一个高端专业的工具比如Visual Studio Team System(负载测试功能)。 当然了,你你可以使用一些客制的应用/代码来模拟负载。但我的经验是,客制的代码更适合用来测试响应时间(Response Time)。鉴于编写客制化的代码需要的工作量太大,一个好的负载测试工具比如说VSTS可以让你挑选一系列事务,模拟网络延迟,加入用户思考时间(真实用户的反应时间),测试迭代次数等等。我同时强烈建议负载测试使用真实数据以无限接近真实使用场景。
扩展性(Scalability)—— 扩展性代表在添加了额外的硬件后你的系统将作何反应。系统能够使用新添加的资源来处理增加的负载吗?考虑到未来可能的增长,这一点对你的系统来说极其重要。这里我们有两种选择-向上/垂直扩展(用更好的机器);或者向外/水平扩展(使用更多的机器)。通常来说后者更受青睐。做水平扩展的一个挑战是,你的设计不能包括一些密切相关(耦合)的服务器,以便负载均衡器可以在不同服务器之间调整负载。通过内置软件或硬件NLB(network load balancer 网络负载均衡器)的负载均衡工具的帮助,你可以衡量系统的扩展性,及保证系统能够承担新增的负载而不出现任何问题。其中一个工具可以监测性能计数器,来检查真实的请求是否已经在服务器间被分派和分享(我计划在未来的博文中谈到NLB)。
压力测试(Stress Testing)——很多人对压力测试感到困惑,或混淆了它和负载测试。简单的解释是,如果你发现自己连续执行测试超过24小时,你在做的就是压力测试(更精确的说法是在你为了打一个补丁而停下系统之前,系统实际的工作时间/在线时间)。负载测试的动机是衡量你的系统在过载条件下恢复正常的能力。系统是能后恢复到正常,还是彻底崩溃?健壮性,可以视为针对长时间运行且几乎无宕机系统的所做压力测试的一部分。一个简单例子就是内存泄漏。你的系统会在处理峰值负载后释放内存吗?另一个例子是,如果一个磁盘因为持续繁重的I/O(输入输出)负载而失效时会发生什么?你的系统会丢失数据吗?找到并定位这些潜在的风险就是压力测试背后的动机
转载于:https://www.cnblogs.com/lantuzi/p/6229633.html
性能测试 - 响应 vs 延迟 vs 吞吐量 vs 负载 vs 扩展性 vs 压力 vs 健壮性相关推荐
- (6)Spring WebFlux性能测试——响应式Spring的道法术器
本系列其他文章见:<响应式Spring的道法术器>. 前情提要:Reactor快速上手 | Spring WebFlux快速上手 本文源码 1.4 从负载测试看异步非阻塞的优势 前面总是& ...
- 了解区块链延迟和吞吐量
大家鲜少提到如何正确地测量一个(区块链)系统,但它却是系统设计和评估过程中最重要的步骤.系统中有许多共识协议.各种性能的变量和对可扩展性的权衡. 然而,直到目前都没有一种所有人都认同的可靠方法,能够让 ...
- 度量网络延迟和吞吐量
度量延迟和吞吐量最简单的方法是:弄清楚浏览器的高速缓存区的大小和从服务器获得一个特定页面所花的时间.可以使用lynx或者curl命令来获取相关数据. 比如:time lynx -source [url ...
- TCP接入层的负载均衡、高可用、扩展性架构
转载自 TCP接入层的负载均衡.高可用.扩展性架构 一.web-server的负载均衡 互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡.整个架构分三层: 上游调用层 ...
- 面试官:怎么改进哈希算法实现负载均衡的扩展性和容错性?我:...
面试官:怎么改进哈希算法实现负载均衡的扩展性和容错性? 什么是哈希算法 数据结构中我们学习过哈希表也称为散列表,我们来回顾下散列表的定义. 散列表,是根据键直接访问在指定储存位置数据的数据结构.通过计 ...
- 性能测试 理论初探(四),性能测试的指标是什么?web性能测试指标包括哪些?http性能测试指标关注 响应时间、吞吐量、服务器资源占用等
文章目录 前言 性能测试 考虑点 1.时间特性 2.资源利用率 3.服务器可靠性 4.可配置优化性 性能指标简介 1.响应时间 2.吞吐量 3.服务器资源占用 Web服务器 性能指标 b/s Web服 ...
- 性能测试基础(四)吞吐量
吞吐量 吞吐量 吞吐率 事务 我们每天的生活中都在用水用电,如果我们把水龙头拧到最大,还是一滴水不出.那我们就会找物业/房东去询问情况,但一般不会想过去找自来水公司解决.我们每天都会上网,看电影很卡, ...
- 29 | 案例篇:Redis响应严重延迟,如何解决?
在访问商品搜索接口时,我们发现接口的响应特别慢.通过对系统 CPU.内存和磁盘 I/O 等资源使用情况的分析,我们发现这时出现了磁盘的 I/O 瓶颈,并且正是案例应用导致的. 接着,我们借助 pids ...
- 服务器分发系统如何做性能测试,如何针对音视频流媒体服务器分发的RTSP视频流进行并发压力测试?...
对于普通视频网站来说,并发数量是一个非常有参考价值的数据,在部分时间段,并发数量也许不大,但是也可能短时间内暴涨且没有上限,此时就需要系统具备良好的扩张能力和负载均衡能力.那么如何针对流媒体服务器分发 ...
最新文章
- 持续集成(三):最佳实践
- [20150113]关于oracle的存储结构.txt
- swift_020(Swift 的属性)
- labview 软件编程规范
- APP的CPU,内存,耗电,流量测试工具
- sql优化中in关键字_工作中遇到的一个SQL优化问题与解决方案
- transmac使用方法_Mac苹果电脑降级方法?
- Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
- 多策略调和的布谷鸟搜索算法
- 计算机怎么禁用软件网络访问,Windows10系统下禁止软件联网的两种方法
- HDoj 1862
- 网站CNZZ数据统计的实现方式
- Android butterknife黄油刀使用大全
- 一款在线免费的甘特图,让你轻松管理项目进度
- 傅里叶变换、拉普拉斯变换的应用
- python生成一个20万数据_用Python分析了20万场吃鸡数据,有不少有趣的发现
- EXCEL自定义函数 VLOOKUP的变体(从最右边找值,找到之后返回左边的值)
- 老男孩Python自动化培养(全栈)脱产面授班32期(python语言类课销量榜首)
- c语言中向计算机输入一个字符的函数是,计算机c语言输入输出函数格式详解.docx...
- Django解决扩展用户表时,后台Admin显示密码为明文的问题
热门文章
- PHP面向对象:instanceof 运算符 (备忘)
- 文件同步服务器,iis 集群 ,代码同步(一)
- 【微收藏】FourShadows.js – 时间感知的算法驱动的图标阴影JS库
- MonoTouch 二三事(三)mono mkbundle 打包程序的解包支持
- 今天买到了回家的火车票,有座儿,心情不错.
- 虚拟机VMware Workstation与主机间共享文件(利用虚拟光驱)
- script标签中的defer和async属性
- JavaScript学习(七)—元素节点的获取方式
- boot定时任务开启和关闭 spring_Spring-Boot 下定时任务通过配置文件控制开关和执行时间...
- 离婚前一晚是什么心情呢?