- NFS 服务器以某种方式断开连接
- NFS客户端检测服务器已断开连接
- 客户端尝试重新连接
- 服务器重新出现并重新连接成功
看来 TCP keepalive、connection timeout 正在做一些事情,但我在 /proc/sys/net/ipv4/ 中发现的默认 keepalive 时间是 7200
所以我认为 tcp keepalive 时间被 NFS 覆盖
当前的问题是,当 NFS 客户端需要几分钟来检测服务器并显示下面的消息时,我们希望缩短这个时间(上面的 No3)。
“nfs:服务器没有响应,仍在尝试”
我们测量了轮询时间,
- 24秒
- 72秒(24秒+(24秒*2=48秒))
- 16秒(72秒+(48秒*2=96秒))
- 360秒(168秒+(96秒*2=192秒))
- 660秒(+300秒)
- 960秒(+300秒)
24 -> 48 -> 96 -> 192 -> 300 -> 300
有谁知道在哪里可以找到这个“300”?或者这是因为其他问题而不是 TCP 保活时间?
答案1
是的,NFS 客户端确实会覆盖 keepalive 设置——它源自“timeo”挂载选项。看http://lxr.free-electrons.com/source/net/sunrpc/xprtsock.c对于低层次的细节。