NFS 是否会覆盖 TCP 保活时间?

NFS 是否会覆盖 TCP 保活时间?
  1. NFS 服务器以某种方式断开连接
  2. NFS客户端检测服务器已断开连接
  3. 客户端尝试重新连接
  4. 服务器重新出现并重新连接成功

看来 TCP keepalive、connection timeout 正在做一些事情,但我在 /proc/sys/net/ipv4/ 中发现的默认 keepalive 时间是 7200

所以我认为 tcp keepalive 时间被 NFS 覆盖

当前的问题是,当 NFS 客户端需要几分钟来检测服务器并显示下面的消息时,我们希望缩短这个时间(上面的 No3)。

“nfs:服务器没有响应,仍在尝试”

我们测量了轮询时间,

  1. 24秒
  2. 72秒(24秒+(24秒*2=48秒))
  3. 16秒(72秒+(48秒*2=96秒))
  4. 360秒(168秒+(96秒*2=192秒))
  5. 660秒(+300秒)
  6. 960秒(+300秒)

24 -> 48 -> 96 -> 192 -> 300 -> 300

有谁知道在哪里可以找到这个“300”?或者这是因为其他问题而不是 TCP 保活时间?

答案1

是的,NFS 客户端确实会覆盖 keepalive 设置——它源自“timeo”挂载选项。看http://lxr.free-electrons.com/source/net/sunrpc/xprtsock.c对于低层次的细节。

相关内容