我正在尝试了解不同的网络指标,特别是那些与时间有关的指标。但我发现自己对定义感到困惑。从我迄今为止所做的研究中,我发现定义存在一些矛盾,具体取决于来源,但这是我确定的(可能是错的!!):
潜伏:数据包从客户端到达目的地所需的时间,或者简单地说是旅行时间。
往返时间 (RTT):请求到达目的地并返回客户端所需的时间。
响应时间:请求到达目的地、处理以及将处理结果返回给客户端所需的时间。
我的问题是:
- RTT 仅仅是 2 倍延迟吗?
- RTT 和响应时间有什么区别?在我看来,它们是同一件事。
- 延迟和 RTT 是如何计算的?相对容易测量的响应时间如何消除处理时间?
- 最后,以上所有问题的根源是:使用 ping 命令时,显示的时间是延迟 RTT 还是响应时间?
抱歉,问题太多了,但是它们都是相互关联的,所以我觉得不应该把它们分成多个帖子。
答案1
其中,往返时间 (RTT) 肯定是指通过网络往返的时间。
延迟和响应时间更为通用,甚至可能不是指 IP 网络。由于存储系统基于主轴且延迟较高,因此系统响应时间和用户体验都很糟糕。网络延迟可能是往返的,但为了避免歧义,请说 RTT。
ICMP echo 本身不足以作为性能衡量标准。它是控制数据,在路由器(CPU 控制平面而不是数据 ASIC)和主机(OS ICMP 实现而不是用户空间软件)中执行不同的路径。典型的 ping 实现是往返的,因为 echo 协议不包含时间戳。(很少有网络堆栈具有ICMP 时间戳已启用。
如何从相对容易测量的响应时间中消除处理时间?
通过测量两者。用户真正关心的是他们的请求得到服务的时间。总时间可能包括从用户到数据中心的几次往返、服务器端的处理时间(可能包括联系多个 API)以及客户端的处理时间。
了解应用程序的协议。为用户执行某项操作需要多少次往返,以及组件之间的网络延迟。
就像我们在 Stack Exchange 上一样,Stack Overflow 的监控堆栈进行有趣的案例研究。收集所有指标,包括网络浏览器计时,进行一些光分析,模式就会从数据中显现出来。
答案2
1:基本是的。虽然存在少量开销(数据包不会奇迹般地被发回),但开销应该很小,并且低于测量粒度(即,如果您以 0.1 毫秒为单位进行测量,则应该低于该粒度,并且通常确实如此)。
2:只有当另一方不进行任何处理时才会花费时间。如果另一方执行了密码哈希校验并随机延迟响应(此功能的标准,因此您不能从处理时间中扣除任何内容)怎么办?或者必须调整图片大小,这需要半秒钟?
3:完全不是 - 它们被测量了。一般通过“尽可能少做”的端点或使用 PING。
4:抱歉,我不会为你阅读手册。ping 命令和 ping 命令文档中对此有详尽的说明。