NFS 缓存问题

Mic*_*ael 9 nfs

我们遇到了在代码部署期间间歇性发生的问题。NFS 在读取文件时对其进行缓存,但如果在代码部署期间读取文件,它会保持脏状态,就好像文件在部署期间未更改一样。我们可以缓解此问题的唯一方法是在部署后清除 NFS 缓存。

我们的网络服务器为所有请求返回空白页,直到 NFS 缓存被清除。

是否有设置或有人对如何解决此问题有建议?

我们目前正在运行 NFS v3。

Fed*_*rra 8

存在用于在 NFS 挂载(客户端)上缓存文件属性的不同选项:

NOAC
使用 noac 挂载选项来实现多个客户端之间的属性缓存一致性。几乎每个文件系统操作都会检查文件属性信息。客户端将此信息缓存一段时间以减少网络和服务器负载。当 noac 生效时,客户端的文件属性缓存被禁用,因此每个需要检查文件属性的操作都被强制返回到服务器。这允许客户端以许多额外的网络操作为代价非常快速地查看对文件的更改。

lookupcache=none
如果客户端忽略其缓存并验证服务器的每个应用程序查找请求,则该客户端可以立即检测到另一个客户端何时创建或删除了新目录条目。您可以使用lookupcache=none 指定此行为。如果客户端不缓存目录条目,则所需的额外 NFS 请求可能会导致性能损失。与使用 noac 相比,禁用查找缓存会导致更少的性能损失,并且不会影响 NFS 客户端缓存文件属性的方式。

actimeo=n
使用 actimeo 将所有 acregmin、acregmax、acdirmin 和 acdirmax 设置为相同的值。

  • acregmin=n,NFS 客户端在从服务器请求新属性信息之前缓存常规文件属性的最短时间(以秒为单位)。如果未指定此选项,则 NFS 客户端使用最少 3 秒。
  • acregmax=n,NFS 客户端在从服务器请求新属性信息之前缓存常规文件属性的最长时间(以秒为单位)。如果未指定此选项,NFS 客户端将使用 60 秒的最大值。
  • acdirmin=n,NFS 客户端在从服务器请求新的属性信息之前缓存目录属性的最短时间(以秒为单位)。如果未指定此选项,NFS
    客户端使用最少 30 秒。
  • acdirmax=n,NFS 客户端在从服务器请求新的属性信息之前缓存目录属性的最长时间(以秒为单位)。如果未指定此选项,NFS
    客户端将使用 60 秒的最大值。

取自NFS 手册页

我希望这会有所帮助。