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

如果NFS客户端读取文件,是否发生networking通信? 还是只是写入(通过任何节点),导致networkingstream量?

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


作为参考,这是我的NFSconfiguration:

服务器/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 

读取将导致stream量。 文件stat()调用将导致stream量。 客户有一个caching,但它是非常短暂的,真的不是一个可以依靠的东西。

没有人指责NFS快速高效,尽pipe可以调整。

是的stream量确实发生。 在你的特定用例中,PHP会testing这个文件是否真的存在。

然而,你会惊讶于networking服务的stream行度。 我可以想象一个大型的博客馆,他们使用的是一个图像文件存储。 但是他们只能从NFS调用一个文件,然后caching。

最好的办法是多次分析你的脚本,看看有多lessNFS开销涉及到NFS请求。 本地请求。 Xdebug将帮助你。

要确定涉及多lessnetworking开销,在请求正在执行时运行TCPDump / Wire shark。 然后检查输出。 这应该让你知道每个请求会涉及什么。

您也可以使用UDP选项安装NFS共享。 这会加速一些事情。

如果你要推出这个网站,你需要一个快速的后端networking。 所以,如果你确实有能力使用本地存储,我会尽力去做。