什么是延迟?API的网络延迟解释
无抓取爬虫浏览器提供托管的云浏览器会话,用于从JavaScript渲染的公共网页收集数据。
简而言之
- 延迟测量延迟。 它描述了数据或工作从起始事件到观察到的结果所需的时间。
- 往返时间是常见但不是普遍的。 单向延迟、首字节时间、输入延迟和端到端作业时间回答不同的问题。
- 带宽和延迟是独立的维度。 高带宽通道仍然可能具有长的传播或处理延迟。
- 请求在各层之间累积延迟。 DNS、连接设置、安全协商、网络传输、服务器队列、计算、传输和渲染都在贡献延迟。
- 良好的优化从拆解开始。 在选择缓存、连接重用、区域放置或负载减少之前测量命名的阶段。
延迟是等待所花费的时间
延迟是启动事件与相应结果之间的延迟。在网络中,该术语可能指一个数据包在单方向上旅行的时间或消息及其确认的往返时间。在API中,用户通常关心端到端响应时间。在浏览器中,感知到的延迟更进一步,包括文档解析、脚本工作、布局和显示。因此,一个有用的延迟声明应同时命名起始事件和结束事件。
物理距离给网络延迟设定了下限,因为信号在光纤、铜线、射频链路、路由器和中间系统中传播需要时间。苹果公司的归档 网络延迟解释 将其框架设定为往返时间并指出距离即使在没有过载的情况下也会有所贡献。真实系统在该基础上增加了序列化、排队、协议、处理和调度延迟。
一个请求的延迟预算
一个有用的什么是延迟的模型从启动事件开始,跟踪工作直到返回结果。将该路径划分可以防止一个缓慢或失败的阶段被指责为另一个。
名称解析和连接设置
客户端可以解析主机名,选择地址,建立传输状态,并在发送应用请求之前协商加密。缓存的DNS答案和重用的连接可以去除这些阶段中的一些,而冷连接则暴露了它们。
传输和排队
数据包穿越链路和转发设备。传播反映了距离和媒介;序列化反映了链路速率和数据包大小;排队反映了竞争流量。排队是最变量的组件,当路径负载增加时,可能急剧增长。
服务器和客户端工作
接收服务会进行身份验证、验证、读取数据、运行应用逻辑,和序列化响应。然后客户端解析、转换,并可能呈现它。快速的网络无法弥补长时间的数据库查询,快速的服务器无法消除远程往返。
延迟指标回答不同的问题
只有在行描述相同层时,比较才有用。此表将什么是延迟与最可能混淆的概念放在一起。
| 概念 | 意思 | 实际信号 |
|---|---|---|
| 单向延迟 | 从发送事件到接收事件的时间。 | 同步时钟和方向分析。 |
| 往返时间 | 消息发出和响应返回的时间。 | 路径健康、距离和交互协议。 |
| 首字节时间 | 从请求开始到响应字节开始的时间。 | 连接、服务器处理和初始传输。 |
| 下载持续时间 | 从第一个响应字节到最后一个的时间。 | 有效负载大小、拥塞和可用吞吐量。 |
| 端到端作业时间 | 从用户操作到可用输出的时间。 | 完整的产品体验,包括客户端工作。 |
延迟如何改变系统行为
什么是延迟的用例在规模和受众上有所不同,但每个用例都依赖于具体的合同或性能属性。这些卡片强调了这种依赖性。
交互式界面
小的重复延迟会影响输入、搜索建议、导航以及任何依赖请求的工作流程。
分布式API
服务到服务的调用可能会加倍延迟,当一个请求在一系列下游操作上等待时。
数据收集
导航、渲染、提取和存储都会增加时间,因此阶段级别的测量可以识别出真正的限制。
实时控制
语音、游戏、工业控制和协作工具对变化以及平均延迟都很敏感。
如何测量延迟而不混合信号
首先定义时钟边界。类似ping的往返并不包括应用处理。到第一个字节的时间包括更多请求路径,但不包括全部内容。浏览器完成包括客户端执行,而API监控则不包括。报告指标名称、百分位、位置、协议、连接状态和观察窗口,以便另一个人能够解释。
使用分布而不是一个平均数。中位延迟描述一个典型的观测,而上百分位数暴露排队、冷路径和共享资源争用。单独记录失败和取消的操作,因为丢弃它们可能使系统看起来比实际感觉快。对等比较:温暖连接与温暖连接、等效负载以及相同的用户区域。
控制映射到决策的边界。 W3C导航时序规范 定义了导航阶段的浏览器时序属性。服务器跟踪可以将队列时间与应用工作分开,而客户端跨度可以隔离解析和渲染。目标是一个延迟预算,其条目可以被操作,而不是一个充满无关计时器的仪表板。
浪费工程时间的延迟误读
- 把每个慢结果都称为网络问题。 服务器队列、数据库工作、浏览器脚本和存储可能会主导观察到的延迟。
- 仅优化平均值。 一个稳定的中位数可能会隐藏大量请求所经历的痛苦尾巴。
- 忽视依赖深度。 几个顺序调用会增加等待时间;并行调用通常将在最慢的分支附近完成。
- 比较不同的负载。 较大的响应在传输和解析上花费更多时间,这可能被误认为是初始延迟的变化。
- 仅从一个区域测试。 物理距离和互连路径使地理位置成为结果的一部分。
减少网络数据管道中的延迟
移除不必要的顺序边界。如果需要两个独立的资源,请在合理的范围内并发获取它们。如果需要相同的稳定资源并且允许缓存,请重用它。保持连接打开,遵循协议和服务的允许,并在地理位置是主要因素时,将计算放在数据源或用户附近。
根据页面行为选择获取方法。直接的结构化响应可以避免浏览器启动和渲染。当页面依赖JavaScript、交互或会话状态时,浏览器会话是合适的。一旦需要浏览器,请将依赖步骤保留在同一会话中,以避免重复设置成为延迟预算中的最大行。
在第一个字节之后减少负载工作。当API支持选择时,只请求所需的字段,压缩文本格式,停止下载无关资产,尽可能增量解析,并编写不包含重复转换的标准化输出。这些更改能改善完成时间,即使往返时间无法减少。
什么是延迟审查清单
使用这些检查将什么是延迟的定义转化为开发人员、操作人员或审查员可以重现的实施证据。
- 重述边界。 对于什么是延迟,确定调用者、提供者、路径以及标志完整结果的确切事件。
- 验证中心声明。 使用实现及其文档确认该声明:延迟度量延迟。它描述了数据或工作从起始事件移动到观察结果所需的时间。
- 追踪机制。 观察名称解析和连接设置、过渡和排队、服务器和客户端工作,并记录哪个组件拥有每个阶段。
- 检查最近的区别。 记录为什么单向延迟意味着“从发送者事件到接收者事件的时间。”在此系统中。
- 测试一个代表性用例。 使用交互式界面与真实的数据、位置、体量和权限边界。
- 防止已知错误。 查看“把每个慢结果都称为网络问题。”并添加一个能捕捉到它的验收检查。
- 界定工作负载。 为什么是延迟设置适当的主题限制,包括有效负载、并发、执行时间和适用的存储输出。
- 记录决定。 解释为什么为什么是延迟适合这个边界并命名可以证明不同方法的证据。
结论
为什么是延迟应该描述设计中可测试的部分,而不是作为邻近行为的松散标签。审查应保留这一中心决策:延迟衡量延迟。它描述数据或工作从起始事件移动到观察结果所需的时间。还应防止将每个缓慢的结果称为网络问题,并保持为什么是延迟访问在接口或网络的文档政策内。
准备好构建您的网络数据工作流程了吗?
将一个测量的为什么是延迟获取或集成步骤连接到上述验证和存储实践。
今天注册并获得 $5的免费积分 — 无需信用卡.
领取您的$5信用→常见问题
什么叫好延迟?
一个好的延迟是满足用户和系统对命名操作的要求的延迟。没有普遍的阈值,因为键盘交互、批量导出和过夜爬取承受不同的等待时间。测量相关的端到端事件并设置明确的目标。
延迟和ping是一样的吗?
不是。Ping通常使用诊断协议报告网络往返,而应用程序延迟可能包括DNS、连接设置、加密、服务器处理、响应传输、解析和渲染。Ping可以提供诊断信息,但不代表每个应用阶段。
更多带宽可以减少延迟吗?
更多带宽在链接是瓶颈时减少序列化和传输时间,特别是对于大有效负载。它不会消除传播距离或服务器计算,并且可能不会改善在其他空闲路径上的小请求往返。
为什么API延迟会变化?
API延迟会变化,因为路线、队列、连接重用、服务器负载、缓存、依赖项和有效负载各不相同。在得出结论之前,按区域、端点、响应大小、状态和连接状态分段测量。