我们已经建立了一个新服务器,其上行链路连接速度非常快,为 1Gbps,但由于某种原因,部分客户端的下载速度仍然非常慢。
在服务器所在的国家/地区,客户端和服务器之间的网络速度非常快,正如预期的那样。但是当客户端在另一个国家/地区时,下载速度急剧下降,我们只能测量 1MB/s - 2MB/s 之间的速度。这不是客户端带宽问题 - 有足够的可用带宽。
我该如何调试这个问题?从互联网上读到的信息,我怀疑这可能是从客户端到服务器的路径中某处出现数据包丢失问题。traceroute 能精确定位有问题的节点吗?
答案1
尝试同一地区的另一台服务器。听起来它可能是目标服务器。你不能指望每个人都有 1Gbps 的链接。
答案2
对于您所看到的速度、路径中有多少跳数以及往返时间(用 测量ping
)有准确的数字会很有帮助。
一般而言,任何数据路径的最大速度都是该路径中最慢的部分。对于国际路径,端点的速度可能并不重要:中间的链接可能会减慢您的速度。
traceroute
可能会有所帮助。在没有活动时运行它,然后在传输期间重复。寻找传输期间延迟比没有活动时高得多的点。如果存在这样的点,则该点靠近瓶颈发生的位置。
如果延迟在端点附近突然增加,则问题可能出在该端点的网络连接上。如果延迟在中间,则问题可能出在广域网上的拥塞/争用上。
如果您没有看到任何地方有跳跃,那么很可能是整个路径都出现了拥塞。
还要记住,TCP(尤其是较旧的实现)不喜欢高延迟、长路径或任何数据包丢失。如果总延迟超过几十毫秒,您不太可能实现接近千兆位的速度。
答案3
一个非常可能出现的问题是接收窗口已用完。如果您搜索术语 BDP(带宽延迟积)或 LFN(长胖网络),您可以找到详细的解释。简而言之,延迟超出了接收窗口保持数据包流动的能力。
计算和设置值的两个良好来源是:http://www.psc.edu/networking/projects/tcptune/&http://www.speedguide.net/bdp.php
只需对远端进行 ping 操作,你就能知道国内和国外的延迟是否存在显著差异