我刚刚在一台新服务器上安装了全新的 FreeBSD 9.0。该机器使用板载 gbit 网卡 (Atheros AR8151)。它运行 Samba 和 FTP,并具有约 3TB 的 ZFS 池。当我从某些主机下载文件时,我获得了非常好的读取性能,通过 FTP 接近 90mb/s。但其他一些主机的读取性能非常差,大约 2mb/s。起初我以为是 samba,但事实并非如此。我尝试从同一交换机后面的 2 个独立主机下载一些文件,一个是 Ubuntu 10.10 机器,另一个运行 Mac OS 10.4。Ubuntu 机器的速度为 2mb/s,而 Mac OS 机器的速度为 10mb/s。
要求提供有关网络和测试设置的更多详细信息。问题中的网络是我所在大学的网络,至少有 1gbit。
我有一台运行 OpenWRT 的 NetGear WNDR3700 路由器。WNDR 连接到 HP Procurve 交换机(不受我控制)。Procurve 还通过光纤连接到大学网络。
该服务器运行的是 Intel Celeron G540,带有上述 NIC。它通过千兆以太网直接连接到 WNDR3700。为了测试和诊断问题,我使用多种协议从服务器下载和上传了大约 1.5GB 的文件。使用了以下机器和协议(下载是从服务器发出的流量):
一台通过千兆以太网连接到 Procurve 的 Windows 7 机器。我只能在这台机器上进行下载测试,速度约为 2mb/s。这是一台不到一个月的笔记本电脑。
其次,有一台 Linux Mint 机器连接到 WNDR,这台计算机大约有 6 个月的历史了。我对这台计算机进行了下载和上传测试,性能都非常好。我使用了 FTP、SMB 和 scp。
然后还有另一台 Linux 机器,运行 Ubuntu 10.10,同样是一台笔记本电脑,但大约有 3 年历史了。在所有 3 种协议上进行双向传输时,它的性能非常差。这台机器也连接到了 Procurve。
然后还有另一台 Linux 机器,不知道它运行的是什么发行版,因为它不是我的。这台计算机通过 SMB 和 FTP 以 10MB/s 的速度下载了文件。再次连接到 Procurve(通过 100mbit 以太网)。
然后是一台使用了3个月的Macbook pro,通过WIFI连接到WNDR,这台机器在所有测试中也表现优异。
最后,还有一个托管在几百公里之外的 VPS,我只能在这台 VPS 上测试 FTP 和 scp,但它的性能很好。
所有这些测试都进行了几次,分布在一天中,所有测试都是一致的。起初我以为可能是 Procurve,它是全新的,但正如你从列表中看到的那样,有几台电脑表现优异。
经过更多测试后,我现在得出结论,这根本不是服务器的问题。我尝试将一些文件从 Mint 传输到 Ubuntu 机器,结果各不相同:Mint -> Ubuntu:~2mb/s Ubuntu -> Mint:~20mb/s
服务器和 Mint 盒都是真正的新型 Sandy Bridge 机器,Mint 盒有一个 Realtek 8111E NIC。
答案1
经过很长一段时间尝试各种方法后,我终于找到了问题所在。结果发现,其中一条 UTP 电缆的一条 TX 线路断了。或者至少它的性能不如预期。显然,如果下载主机通过 100mbit 连接,Procurve 交换机将只使用 1 条线路。这是一个有点奇怪的问题,但至少我最终解决了它。