读取 NFS 文件系统是否会降低性能?

读取 NFS 文件系统是否会降低性能?

如果 NFS 客户端读取文件,是否会发生任何网络流量?或者仅仅是写入(由任何节点)才会导致网络流量?

特别是,我感兴趣的是,file_exists()如果目标文件位于 NFS 上,则在 PHP 脚本中执行调用是否会比目标文件位于本机文件系统上更昂贵?


作为参考,这是我的 NFS 配置:

服务器/etc/exports

/var/www/staging/uploads 192.168.0.1(rw,sync,no_root_squash)

客户/etc/fstab

192.168.0.1:/var/www/staging/uploads /var/www/staging/uploads nfs soft,intr,rsize=8192,wsize=8192

答案1

读取会导致流量。文件 stat() 调用也会导致流量。客户端有缓存,但缓存的寿命很短,而且确实不值得依赖。

尽管 NFS 可以进行调整,但没有人指责过它的快速性和高效性。

答案2

是的,流量确实发生了。在您的特定用例中,PHP 将测试该文件是否确实存在。

但是,您可能会惊讶于 NFS 在 Web 服务中的流行程度。我记得有一家大型博客机构将其用作图像文件存储。但是他们只从 NFS 调用文件一次,然后将其缓存。

最好的办法是多次分析您的脚本,以查看 NFS 请求与本地请求相比涉及多少开销。Xdebug 将为您提供帮助。

要确定涉及多少网络开销,请在发出请求时运行 TCPDump/Wire shark。然后查看输出。这应该可以让您了解每个请求涉及的内容。

您还可以使用 UDP 选项挂载 NFS 共享。这将大大加快速度。

如果您要将其推送到非常多的 Web 农场,则确实需要一个快速的后端网络。因此,如果您确实有能力使用本地存储,我会尝试这样做。

相关内容