我有两台 CentOS 机器(虚拟化),安装了 NFS 共享,其中的内容如下/etc/fstab
:
<ipaddr>:/mnt/nfsshare /mnt/nfsshare nfs rsize=1024,wsize=1024,timeo=14,intr,cto,relatime 0 0
我已经在每个 Apache 的配置中EnableMMAP Off
都EnableSendfile Off
安装了。连接到 NFS 的另一台服务器偶尔会复制带有更新版本的 CSS 文件(例如,当有人从暂存中应用更改时)。从 shell 来看,此更新似乎已完成(即更新的时间戳并cat
显示正确的数据)。
但是,从浏览器或其他工具加载文件时显示的是过时的版本。有时,我甚至会看到不同的响应(两个 Apache 服务器是负载平衡的)。一段时间后,更改似乎会完成,Apache 将返回正确的文件内容,但通常需要一两分钟。
答案1
您可以尝试用“noac”替换“cot”并完全禁用缓存,但是如果您的生产实例是唯一出现此缓存的地方,则可能会受到一些性能损失。另一个选项是设置 acregmax=10,这将使属性缓存时间不超过 10 秒——默认情况下,所有属性缓存 60 秒,虽然“cto”表示应在 open() 和 close() 上检查属性,但单个 apache 进程可能仍挂在文件句柄或其他东西上。