我在生产中有几个 Web 应用程序,它们利用 NFS 挂载在 Web 头之间共享资源(通常是静态资产文件)。如果 NFS 挂载不可用,Apache 将挂起无法访问的请求文件,内核将记录:
Nov 2 14:21:20 server2 kernel: nfs: server server1 not responding, still trying
我重现了运行 NFS v3 和 Apache 2.2.3 的 RHEL5 中的行为:
在 Server1 上创建 NFS 挂载(我的 /etc/exports 的内容)
/srv/test_share server2(rw)
在 Server2 上挂载 NFS 共享(我的 /etc/fstab 的内容)
server1:/srv/test_share /mnt/test_share nfs defaults 0 0
在 Apache 中设置一个虚拟主机,其中包含一个简单的 HTML 文件,该文件引用存储在 NFS 共享上的图像文件
加载网站,html和图片文件都返回200
卸载 NFS 共享,加载页面为引用的图像返回 404
重新挂载 NFS 共享
通过在 Server1 上关闭 NFS 来模拟 NFS 崩溃 - 重新加载站点会挂起检索引用的文件。
到目前为止,互联网搜索还没有找到一个好的解决方案。基本上,所需的行为是 Web 服务器返回 404,并且在 NFS 挂载恢复之前不会挂起。
干杯,
本