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