我们在工作时有一台 NFS 服务器,运行起来略有延迟。然而,随着在多个客户端(由同一台服务器提供服务)上创建更多挂载点,我们注意到性能急剧下降,更多用户无法挂载或访问已挂载cd
的 NFS。我的问题是,多台客户端机器(即使空闲)上的多个 NFS 点是否会影响性能?如果是,会如何影响?
答案1
是的,拥有更多客户端会影响 IO。NFS 的 NFS IOD 数量有限,受以下因素限制:RPCNFSDCOUNT=(位置因发行版而异)。但是,NFSD 计数有一个收益递减点,具体取决于使用异步还是同步挂载的客户端数量以及它们正在执行的操作。在您的 NFS 服务器上,您可以看到它们使用以下方式进行阻塞ps auxw|grep D找到处于不可中断睡眠状态的 NFSD。当发生这种情况时,您还可以看到运行队列增加。您还将看到被阻止的进程(vmwstat 的第二列)。您提到它们处于空闲状态,但是通过观察网络和 rpcinfo 统计数据,您是否确定这一点?
您可以尝试增加 RPCNFSDCOUNT 并重新启动 nfsd 以查看效果是否减弱。
答案2
空闲的客户端挂载点不会影响您的 NFS 服务器性能,因为它们不会引起 I/O。它们仅使用极少量的内存来保存挂载状态。
您确实应该确保这些客户端处于“空闲”状态。客户端计算机上的某种爬虫程序(mlocate/slocate、桌面索引器等)不够智能,无法避开 NFS 挂载点,这种情况并不少见。
另外,客户端上的一些文件更改通知系统将自动轮询您的 NFS 服务器,因为 NFS 没有为此目的提供回调机制。
更有趣的是,如果挂载点出现在客户端的 PATH 中,则可以从 shell 上的每次完成尝试中进行完整扫描。
等等。
NFS 对于客户端来说基本上是透明的,因此我见过人们访问 NFS 挂载的方式数不胜数 - 即使他们自己都不知道。
如果您的客户端是 Unices,请尝试watch -n2 nfsstat -c
检查他们提交的 NFS I/O。