我有一个问题想问那些比我更了解 BSD 的人,关于我在芝加哥郊外家里/工作单位的 LAN 设置。
我似乎无法通过我的 FreeNAS(基于 BSD)文件服务器完全优化我的网络(LAN)吞吐量。它运行最新的 FreeBSD 版本,该版本经过修改,支持多种文件传输协议等。我的 Smoothwall(基于 Linux)路由器后面的每台机器都在通常的 192.168.0.x 子网上,并且大部分工作正常。在 Smoothwall 盒子后面,所有机器都连接到 GB HP 非托管交换机。我在这里托管一个大型 WISP,在家里/工作的地方有一个 OC-3 连接,从“网络”下载/上传没有任何问题。
我的问题在于吞吐量。当我尝试通过 FTP 在任何机器和 FreeNAS 服务器之间传输大文件(实际上任何文件)时,我在 Win 7 或 Linux 机器之间可以实现的最大吞吐量约为 65Mbit/秒。所有机器都运行 Intel Pro 1000 GB NIC,所有电缆均为 CAT6。每台机器都设置为“自动协商”,每台都显示 1500 MTU 全双工 @1GB,所以我知道硬件没有问题。我没有调整任何机器上的 MTU,因为我知道除非使用某些配置(我认为我不是其中之一),否则它是没有意义的。我对 FreeNAS 机器的设置如下:
# FreeNAS /etc/sysctl.conf - pertinent settings shown
kern.ipc.maxsockbuf=262144
kern.ipc.nmbclusters=32768
kern.ipc.somaxconn=8192
kern.maxfiles=65536
kern.maxfilesperproc=32768
net.inet.tcp.delayed_ack=0
net.inet.tcp.inflight.enable=0
net.inet.tcp.path_mtu_discovery=0
net.inet.tcp.recvbuf_auto=1
net.inet.tcp.recvbuf_inc=524288
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.recvspace=65536
net.inet.tcp.rfc1323=1
net.inet.tcp.sendbuf_inc=16384
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.sendspace=65536
net.inet.udp.recvspace=65536
net.local.stream.recvspace=65536
net.local.stream.sendspace=65536
net.inet.tcp.hostcache.expire=1
据我所知,这看起来是针对充当 LAN 服务器的典型 BSD 机器的某种优化配置文件。我可能错了,只是想从比我更了解 BSD 的人那里了解这是否确实可以,或者是否有问题或什么的。还有其他方法可以让我找到更好的 P2P 文件传输方法吗?
说实话,我不知道通过 FTP 传输文件时,我应该寻找 NAS 盒和另一个客户端之间的吞吐量是多少,但有人告诉我,我得到的平均吞吐量(40-70MB/秒)太低了。
我曾考虑在 FreeNAS 盒和 Win7 机器中添加另一个 NIC,并通过静态路由使用 X-over 电缆,但想先找人核实一下是否值得。我不知道这样做是否会绕过 HP GB 交换机并允许机器到机器的传输。
我使用的 FTP 客户端是:Filezilla,我尝试了主动和被动模式,但彼此之间并无实际优势。NAS 盒运行 ProFTPD。
答案1
这个问题似乎已经过时了,但评论中有很多很好的建议可能会解决这个问题。此外,FreeBSD 使用手册有一个关于性能调整的完整部分(随着每个新版本的发布而更新,并且始终提供合理的最新信息/好的建议)。
如果以上方法均无济于事,那么也许值得尝试直接网络速度测试(使用 netcat 发送大量字节流并确定网络吞吐量) - 这将能够确定性能不佳是否与网络有关(并允许您分阶段测试网络:交叉电缆、通过交换机等)或来自其他来源(如磁盘延迟)。