理一理Latency、Bandwidth、Throughput、Response Time概念的区别
经常,一些性能测试人员对延时(Latency)、吞吐(Throughput)、带宽(Bandwidth)和响应时间(Response Time)感到迷惑,今天,就用一些简单的例子来说明它们之间的区别。
从上图(水管示意图),基本可以看出三个重要组件:延时(Latency)、吞吐(Throughput)、带宽(Bandwidth)之间的关系,如果还不清楚,那么可以看下面的解释:
延时(Latency):水从一端传播到另一端所花费的时间称为Latency。它是以毫秒、秒、分钟或小时等时间单位来衡量的。在性能测试中,请求的延时是客户端到服务端以及服务端到客户端的传输时间。一些测试人员称之为“延迟(Delay)”。比如说:
- 一个请求从t=0时刻开始
- 花了1秒时间到达服务端(t=1)
- 服务端花了2秒时间进行处理(t=3)
- 最后花了1秒时间到达客户端(t=4)
所以,我们这里所说的延时(Latency)就是2秒。
带宽(Bandwidth):它显示了管道(通信通道)的容量。带宽表示通过管道的水的最大值。在性能测试术语中,通过通信信道传输的最大数据量称为信道带宽。假设ISDN的带宽是64K,则我们可以增加一个64K的通道,所以总带宽是128K。
吞吐(Throughput):从管道中实际流出的水可以表示为吞吐量。在性能测试术语中,“在给定的时间段内从一个位置成功移动到另一个位置的数据量,通常以每秒比特数(bps)来度量,或每秒兆比特数(Mbps)、每秒千比特数(Gbps)”。例如:在第4秒传输了20 bit数据,因此在t=4时的吞吐量为20bps。
响应时间(Response Time):响应时间是指从用户发送请求到应用程序加上请求已经完成并返回给用户的时间。在上面的延时示例中,响应时间为4秒。
另外,还有一些重要的点需要提一下:
- 解决带宽(Bandwidth)比解决延时(Latency)更容易
- 如果吞吐量(Throughput)几乎等于带宽(Bandwidth),这意味着网络使用率很高
- 通过在平坦吞吐量图中增加响应时间(Response Time)可显示网络带宽(Bandwidth)问题。 可以通过添加额外信道(即通过增加网络带宽)来解决该瓶颈
- 理想情况下,吞吐量(Throughput)和网络带宽(Bandwidth)的预期容量是一致的
- 有些工具不以单位时间表示吞吐量(Throughput),而是以时钟周期表示。这是不正确的,但通常使用更方便
- 响应时间(Response Time)与吞吐量(Throughput)成正比。如果吞吐量(Throughput)随响应时间(Response Time)的增加而减少,则表示应用程序/系统不稳定
- 线程的数量与吞吐(Throughput)量成正比
- 如果延时(Latency)较低,但是带宽(Bandwidth)较小,那么从A点到B点的数据传输时间要比延时(Latency)低且带宽(Bandwidth)高的时间长
- 延时(Latency)受连接类型、距离和网络拥塞的影响
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
helm 部署和简单使用
微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。 Helm通过软件打包的形式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用部署和管理的复杂性。 随着业务容器化与向微服务架构转变,通过分解巨大的单体应用为多个服务的方式,分解了单体应用的复杂性,使每个微服务都可以独立部署和扩展,实现了敏捷开发和快速迭代和部署。但任何事情都有两面性,虽然微服务给我们带来了很多便利,但由于应用被拆分成多个组件,导致服务数量大幅增加,对于Kubernetest编排来说,每个组件有自己的资源文件,并且可以独立的部署与伸缩,这给采用Kubernetes做应用编排带来了诸多挑战: 管理、编辑与更新大量的K8s配置文件 部署一个含有大量配置文件的复杂K8s应用 分享和复用K8s配置和应用 参数化配置模板支持多个环境 管理应用的发布:回滚、diff和查看发布历史 控制一个部署周期中的某一...
- 下一篇
使用 Gradle 构建 Spring-Boot 的 Docker 镜像
通常我们使用 Dockerfile 来构建项目的Docker 镜像,但是也有需求希望使用 gralde 在编译项目的时候一起把镜像给构建并上传,所以该教程讲解了使用 gradle 编写配置 Dockerfile 并生成镜像的过程。 1. 添加依赖 教程使用gradle-docker插件来实现,在 Gradle 的脚本里配置 dockerfile 的构建镜像功能。 gradle-docker插件已经包含在 jCenter 和 MavenCentral中。所以只需要在dependencies添加依赖就能使用 docker 插件。 build.gradle中的配置如下,其他配置省略: 2. 应用插件 添加以下代码到build.gradle 3. 建立Dockerfile文件,内容如下: 4.添加task 任务 5.编译并构建 Spring-Boot 项目的 Docker 镜像 控制台中执行命令:./gradlew clean build dockerBuilder --info 等待出现BUILD SUCCESSFUL就证明编译成功了。 使用docker images命令可以看到新生成了一个...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Red5直播服务器,属于Java语言的直播服务器