欢迎光临散文网 会员登陆 & 注册

网络延迟对应用性能的影响

2021-06-25 14:30 作者:Vecloud_  | 我要投稿


高延迟的明显影响是处理网络请求需要更长时间。

理论上,如果RTT是10毫秒,从客户端系统到服务器的请求将需要5毫秒,然后返回请求的数据将需要5毫秒。事实上,它需要更长时间,因为大多数协议需要在数据开始流动之前来回发送多个数据包。

举例来说,TCP使用三向握手:客户端向服务器发送第一个数据包。从客户端到服务器的第三个数据包是第一个数据包,它能够以(例如)HTTP请求的形式携带数据。在交换过程中,第四个数据包是第一个能够向客户端传输请求的数据包。若RTT为10毫秒,则需要20毫秒,但若RTT为100毫秒,则需要200毫秒。

此外,在打开TCP对话之前,应用程序几乎总是需要在域名系统(DNS)中找到目标服务器的IP地址。这至少是另一次往返(时间)。因此,避免使用RTT高的DNS服务器很重要。在接受连接或处理请求之前,一些服务器软件首先会对客户端的IP地址进行反向DNS搜索。这可能会给用户(尤其是远程用户)带来严重的延迟,而来自之前看到的IP地址的测试人员不会看到这种延迟。如果需要记录日志,请确保这种反向搜索异步,不会阻止处理连接和请求。

应用延迟的另一个来源是协商安全参数。

设置TLS/

SSL需要更多的往返时间,因为需要协商加密和哈希算法,服务器的身份由客户端验证并确定会话加密密钥。类似地,由于开发者和测试者通常都比较接近系统,所以额外的往返效果通常对他们来说并不明显。但远处的用户会看到明显的延迟,因为大约需要十几个数据包来回传输实际数据。

但一旦第一个数据包开始流动,延迟就不会结束。

通过互联网进行通信的一个非常简单的方法是发送数据包,等待另一端确认接收到的数据包,然后发送下一个数据包。这在短距离上是有效的,但在长距离上是不可行的。假设RTT是50毫秒,因为发送者和接收者之间的距离大约是5000公里(3000英里)。发送数据包后,发送者将等待100英里。

ms,然后接收确认并发送下一个数据包。所以传输速度是每个RTT一个数据包。这样,整个大陆或海洋每秒只需要20个数据包,而标准1500字节以太网数据包只需要30个。

KB/秒!

所以TCP的方法就是找出要传输多少个数据包来充分利用可用带宽。假定可用带宽为100。

Mbps。大约每秒8300个1500字节数据包,或者每50毫秒RTT。

415个数据包。因此,TCP发送415个数据包。然后,等待第一个数据包确认后再发送第416个数据包,等等,使415个数据包的窗口处于运行状态。事实上,TCP会不断探索可用带宽,所以它会向网络注入比可用带宽能承受更多的数据包。然后,在某个时间点,一个或多个数据包丢失,TCP降低了其窗口大小,从而降低了其传输速度。

为了避免会话开始时大量网络过载,TCP使用了一种叫做慢启动的算法。选择这个算法的名字并不是特别好,因为TCP加倍了它的窗口,每次来回都加倍了速度。所以可以快速提高它的传输速度。麻烦的是,它从只有几个数据包的窗口大小开始。所以这个窗口需要来回五次左右才能达到50。

msRTT填充100。

连接Mbps所需的415个数据包。所以在TCP达到全速之前需要250毫秒。由于RTT的增加,这种情况变得越来越快:当RTT达到100毫秒时,现在需要进行6次往返,但每次往返的时间是原来的两倍,所以在TCP全速运行之前需要600毫秒。

在处理任何类型的互动网络应用程序时,将等待时间保持在尽可能低的水平总是有帮助的:这将使数据尽快开始流动,并使TCP更快地达到全速。此外,高等待时间往往会使数据包丢失引起的问题更加严重,反之亦然。

了解更多网络知识关注:http://www.vecloud.com/

网络延迟对应用性能的影响的评论 (共 条)

分享到微博请遵守国家法律