【发布时间】:2021-03-16 11:52:29
【问题描述】:
我有两台机器,一台 Mac 和一台 Linux,在同一个本地网络中。我尝试使用其中一个作为 HTTP 服务器来传输文件,结果发现下载速度因服务器而异。如果我使用 Mac 作为服务器,下载速度在 3MB/s 左右,反之则在 12MB/s 左右。然后我用iperf3测试了它们之间的速度,得到了类似的结果:
当 Mac 是服务器,Linux 是客户端时:
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 28.7 MBytes 2942 KBytes/sec 1905 sender
[ 5] 0.00-10.00 sec 28.4 MBytes 2913 KBytes/sec receiver
当 Linux 是服务器,Mac 是客户端时:
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 162 MBytes 16572 KBytes/sec sender
[ 4] 0.00-10.00 sec 161 MBytes 16526 KBytes/sec receiver
我请朋友帮我做下载测试,他告诉我他的两台 Mac 上的速度都在 1MB/s 左右,这与路由器的容量相差甚远。怎么会这样?
【问题讨论】:
-
丢包。 “Retr”向您显示重新传输的段数。 github.com/esnet/iperf/issues/343
-
只是为了量化它,28.7 MB /(1500 字节/段)~= 19,000 段。 1905 个重传段意味着约 10% 的丢包率,即使 RTT 为 0 毫秒,这也会对 TCP 吞吐量产生巨大影响。
-
@JimD。谢谢回复,真的很有帮助。但是为什么丢包总是在一个方向而不是另一个方向发生呢?
-
不知道。告诉我们更多关于您的局域网的信息。无线还是有线?电缆类型或 WIFI 频段....
-
@JimD。好的,所以这不是一个普遍的问题。我将尝试探索我的网络出了什么问题,因为我认为这是一个非常简单的网络,只有两台机器通过 wifi 连接到路由器。非常感谢您的帮助!
标签: performance http tcp lan