在代码部署期间,我们遇到了间歇性的问题。 NFS在读取文件时caching文件,但是如果在代码部署过程中读取文件,它将保持肮脏的状态,就好像文件在部署期间没有更改一样。 我们能够缓解这个问题的唯一方法是在部署之后清除NFScaching。
我们的networking服务器返回所有请求的空白页面,直到NFScaching被清除。
有没有设置或没有人有如何解决这个问题的build议?
目前我们正在运行NFS v3。
存在不同的选项来cachingNFS装载(客户端)上的文件属性:
NOAC
使用noac安装选项可以实现多个客户端之间的属性caching一致性。 几乎每个文件系统操作都会检查文件属性信息。 客户端将这些信息caching一段时间,以减lessnetworking和服务器负载。 当noac有效时,客户端的文件属性caching被禁用,所以每个需要检查文件属性的操作都被迫返回到服务器。 这允许客户非常快地看到文件的变化,这是以许多额外的networking操作为代价的。lookupcache =无
如果客户端忽略其caching并validation服务器的每个应用程序查找请求,则该客户端可立即检测何时由另一客户端创build或删除了新的目录条目。 你可以使用lookupcache = none来指定这个行为。 如果客户端不caching目录条目,那么额外的NFS请求可能会导致性能损失。 禁用查找caching应该导致比使用noac更less的性能损失,并且不会影响NFS客户端如何caching文件的属性。成了actimeo =正
使用actimeo将acregmin,acregmax,acdirmin和acdirmax设置为相同的值。
- acregmin = n,NFS客户端在向服务器请求新的属性信息之前,caching常规文件属性的最短时间(以秒为单位)。 如果未指定此选项,则NFS客户端至less使用3秒。
- acregmax = n,NFS客户端在向服务器请求新的属性信息之前,caching常规文件属性的最长时间(以秒为单位)。 如果未指定此选项,则NFS客户端使用最多60秒。
- acdirmin = n,NFS客户端在从服务器请求新的属性信息之前caching目录的属性的最短时间(以秒为单位)。 如果没有指定这个选项,NFS
客户端使用最less30秒。- acdirmax = n,在从服务器请求新的属性信息之前,NFS客户端caching目录属性的最长时间(以秒为单位)。 如果没有指定这个选项,NFS
客户端最多使用60秒。
采取从NFS手册页 。
我希望这个帮助。
你指定了很多NFS选项,其中大部分(rsize / wsize / soft)是不需要的,因为它们已经(通常)是默认值(在Linux中);
NFS挂接选项
rsize=32768,wsize=32768,timeo=30,retrans=10,intr,noatime,soft,async,nodev
但是,如果您正在运行Linux,则应该考虑设置以下NFS选项;
如果你仍然看到速度问题, actimeo=3 (设置acreg [max | min],acdir [max | min],可以降到1)
lookupcache=none (完全忽略caching,默认为“全部”)
noac (禁用属性caching)
这篇博客似乎有更多的信息