在FreeNAS(BSD)服务器和其他LAN机器之间的TCP / IP和吞吐量

我有一个知道BSD比我更好的人的问题,那就是我在芝加哥以外的家里/局外工作。

我似乎无法通过我的FreeNAS(基于BSD)的文件服务器完全优化我的networking(LAN)吞吐量。 它运行最新的FreeBSD发行版,修改后的版本支持多种文件传输协议等等。 我的Smoothwall(基于Linux)路由器后面的每台机器都在通常的192.168.0.x子网上,大部分工作正常。 所有机器都连接到GB HP非托pipe交换机。 我在这里托pipe一个大型的WISP,并且在家/办公室有一个OC-3连接,并且没有下载/上传到“networking”的问题。

我的问题是吞吐量。 当我尝试传输大文件…真的任何事情…任何机器之间/从FreeNAS服务器通过FTP,我可以达到的最大吞吐量之间的Win 7或Linux的箱子之间是〜65Mbit /秒。 所有机器都运行Intel Pro 1000 GB NIC,所有电缆都是CAT6。 每个设置为“自动协商”,每个显示1500 MTU全双工@ 1GB,所以我知道硬件是好的。 我没有调整任何机器上的MTU,因为我知道这是毫无意义的,除非使用某些configuration(我认为我不是其中之一)。 我的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 

从我所知道的情况来看,对于一台典型的BSD机器来说,这看起来是一个有点优化的configuration文件。 我可能是错的,只是想从一个比BSD更好的人那里知道,如果确实如此,或者某个东西是不合适的或者是什么东西。 有其他的方法,我会更好的P2P文件传输?

我真的不知道我应该寻找在吞吐量之间的NAS盒子和另一个客户端时,通过FTP文件的xferring,但我被告知,我平均得到(40-70MB /秒)太低,什么它可能是。

我曾经想过在FreeNAS盒子里增加另外一个网卡以及Win7机器,并且通过一个静态路由使用一个X-over网线,但是想要先和别人核对一下,看看这个网卡是不是值得的。 我不知道这样做是否会绕过HP GB开关,并允许一台机器反过来加工xfer。

我使用的FTP客户端是:Filezilla,并且尝试了主动和被动模式,互相没有真正的收益。 NAS盒子运行ProFTPD。

这个问题似乎已经过时了,但是在可能解决问题的评论中有一些很好的build议。 此外, FreeBSD手册还有一整段关于性能调整的内容(每个新版本都会更新,总是合理地提供最新的信息/良好的build议)。

如果上述方法都不起作用,那么尝试一个直接的networking速度testing(使用netcat来发送大量的字节stream并确定networking吞吐量)也是值得的 – 这可以确定性能差是否与networking有关(并允许您分阶段testingnetworking:交叉电缆,通过交换机等)或来自其他来源,如磁盘延迟。