我们有一个负载平衡的 Web 应用程序,它从 NFS 安装的驱动器提供一些图像。
当 NFS 服务器发生故障时,它会导致所有 Web 实例故障。
当前该卷已安装:
ip:/path/to/images /docroot/images nfs soft,intr,rw,rsize=32768,wsize=32768 0 0
我针对该卷上的选定图像运行了围攻测试,当它发生故障时,请求最终根据 apache 超时值超时(本次测试设置为 600 秒)。
我将挂载选项更改为:
bg,soft,intr,rw,rsize=32768,wsize=32768,timeo=5,retrans=2,actimeo=60,retry=15
这样虽然好一些,但失败的时间还是太长:第一组请求在大约 30 秒内超时,但下一组请求则需要 180 到 300 秒。
我知道长期解决方案是将它们移至 S3,但是否有可能在不影响性能的情况下将其减少到 5-10 秒以下?
答案1
软 rw 挂载“在某些情况下会导致静默数据损坏”。考虑使用 ro 挂载。假设 Linux 是操作系统,NFS 手册页列出您可以更改的挂载选项。未经测试,给定一个 TCP 软挂载(只读)timeo=1
会retrans=3
导致操作在 6 秒内失败。(“NFS 客户端执行线性退避:每次重新传输后,超时都会增加timeo
...”)