NFS 缓存导致间歇性滞后

NFS 缓存导致间歇性滞后

我们正在一组 isilons 上运行 nfs,在一台机器上创建目录并在另一台机器上读取时会间歇性地遇到相当大的滞后(大约 30 秒)。

这似乎只会在网络非常繁忙时发生,但有人建议在尝试读取新目录之前在父目录上运行“ls”将强制 NFS 重新缓存。

听起来对吗?

答案1

听起来您需要调整客户端上的 acdirmin/acdirmax 安装选项,以更改目录信息缓存年龄的上限和下限。该 30 秒对应于默认的 acdirmin 30 秒,这意味着信息必须在缓存中停留至少 30 秒,客户端才会考虑将其传出并刷新。

看看将 acdirmin 调低至 15 或 10 秒是否有帮助。

此外,'ls' 可能有帮助的原因是它导致在“.”上发生 stat(),这可能会使该 dentry 的缓存无效。我记得我们必须修改一些工具,在 open() 之前对文件或目录进行 stat(),以验证该项目是否适用于我们的一些 NFS 内容。

答案2

那么其他客户端是否注意到该文件已经创建了?(或者是否包括文件包含的数据量的变化)。

所有操作是否都在单个目录中,因为 isilons 在单个目录中的元数据性能存在问题。

您确定不是服务器在写入正在进行缓存的文件吗?如果您登录到 isilon 并从“设备”中查看目录,您是否会看到文件出现在服务器上,同时客户端也说它已经写入了文件。

出于好奇,这两台机器安装了相同的 isilon 砖(虽然这并不重要,但很有趣)。

您有哪些挂载选项?(nfs v2 有什么区别吗(更令人好奇的是,它没有 readir+))

相关内容