跳至正文
中文
立即开始

延迟

延迟是指从发送数据到收到响应之间的时间差,通常以毫秒计。延迟越低,网络请求的响应就越快。

文章目录(8 个章节)

如何测量延迟

网络延迟可以指单向延迟,但往返时间(RTT)更容易测量。RTT 涵盖数据从设备传到目标再返回的整个过程。网页测试工具还会测量连接时间、首字节时间(TTFB)和总响应时间。

以下 curl 命令会以秒为单位显示各阶段的累计耗时:

curl -o /dev/null -s -w 'connect=%{time_connect} ttfb=%{time_starttransfer} total=%{time_total}' https://example.com

这些数值并非单纯的网络延迟,还包括域名解析、连接建立和服务器处理等环节的耗时。

哪些因素会增加延迟

  • 距离与路由: 信号传输需要时间。网络路径越长或越迂回,延迟通常越高。
  • 连接建立: 发送请求前,可能需要完成 DNS 查询、TCP 握手和 TLS 握手。
  • 网络拥塞与丢包: 链路繁忙时会出现排队。丢失的数据包可能需要重传,导致 RTT 增加。
  • 端点处理: 代理服务器或网站可能需要时间检查、转发请求或生成响应。TTFB 高并不一定表示网络本身很慢。

延迟与带宽

指标 衡量内容 常用单位
延迟 一次传输的延迟 毫秒
带宽 传输容量 Mbps 或 Gbps
响应时间 完整请求的耗时 毫秒或秒

带宽和延迟是相互独立的指标。即使连接带宽很高,每次响应前仍可能出现等待。传输大量数据时,带宽更重要;需要发送大量小请求的任务通常更容易受延迟影响。

延迟与代理

正向代理会将请求路径从 client → website 改为 client → proxy → website。多出的这一跳通常会增加一些延迟,具体增加多少取决于距离、路由、负载和目标服务器。

要诊断代理延迟,可以:

  1. 比较同一个 URL。 在允许直连的情况下,从同一客户端分别测量直连请求和代理请求。
  2. 让出口地区与任务匹配。 靠近目标服务器的出口通常能缩短传输时间,除非测试要求使用其他地区。
  3. 复用连接。 HTTP keep-alive 和连接池可避免每个请求都重复建立连接。
  4. 跟踪百分位数。 中位数和 p95 数据能反映偶发的慢请求,而平均值可能掩盖这些情况。将连接超时阈值设在正常波动范围之上,并采用有次数上限的退避重试。

常见问题

代理延迟多少算好?

这取决于目标、出口地区和工作负载。应将代理请求与直连基准进行比较,关注稳定的中位数和 p95 数据,而不是依赖统一的阈值。

代理一定会增加延迟吗?

通常会,因为代理增加了一段网络路径和一个处理环节。如果网络路由不同,代理路径偶尔也可能与直连路径速度相当,甚至更快。

延迟和 ping 是一回事吗?

不是。ping 通常测量 ICMP 往返时间。HTTP 请求还包括 DNS、连接建立、加密、代理处理和网站响应时间。

相关术语

查看全部术语