为什么nfs传输速度比http慢?

为什么nfs传输速度比http慢?

假设我的 nfs 服务器上有一个大文件。服务器和我的桌面通过 100mbps 网络连接。如果我在桌面上挂载一个目录,然后尝试将一个大文件复制到本地 fs,我的速度大约为 3.5MB/s。但如果我尝试使用 wget(服务器端的 nginx)传输同一个文件,我的速度大约为 6.1MB/s。

为什么会这样?为什么 nfs 性能这么差?最重要的是,如何改进这一点。

我的服务器上有 linaro(适用于 arm 系统的 ubuntu 克隆),客户端上有 opensuse 11.4,nfs 是版本 4。

答案1

对本地服务器副本进行基准测试;磁盘到 RAM 和 RAM 到 RAM;以确定服务器上可实现的最大吞吐量。网络传输充其量会稍微慢一些。如果网络只有 100Mb/s,则可能会慢得多/达到最大值。尝试使用 ramdisk 和一个由 nfs 提供的大文件进行测试,并确定这是否只是 RAM 与磁盘的问题。阅读 fs-cache 的文档“NFS 请求从服务器内存而不是本地磁盘可以更快地得到满足。”您是否将 fs-cache 和 cachefilesd 用于 nfs 服务器,最好使用基于 ssd 的 raid 作为缓存目录?使用最少的默认安装并且没有进行任何调整,我期望 nginx 的性能优于 nfs - RAM 与磁盘。来自 nginx 文档 - “默认情况下,NGINX 自行处理文件传输并将文件复制到缓冲区中,然后再发送”。即使从磁盘来看,使用商品硬件和调整,您也应该能够使用 nginx 或 nfs 实现最大 100Mb/s 网络 - 大约 10MB/s。

答案2

据我所知,NFS 默认使用 UDP - 您是否尝试过通过 TCP 安装导出 ( proto=tcp)?您也可以尝试更改该rsize值。这一页有一些关于 NFS 性能调整的信息。

相关内容