Ubuntu 22.04 NFS服务器连接超时配置位置咨询
Ubuntu 22.04 NFS服务器连接超时配置位置咨询
嗨,我来帮你定位这个10分钟连接超时的配置问题~
首先,Ubuntu 22.04默认只支持NFS over TCP,你遇到的服务器10分钟后自动关闭闲置连接的情况,主要和两个层面的配置有关,我给你逐一梳理:
1. NFS服务本身的闲置超时配置
现在Ubuntu用统一的/etc/nfs.conf作为NFS服务的主配置文件,你需要关注[nfsd]段里的tcp_idle_timeout参数,这个参数直接控制NFS服务器关闭TCP闲置连接的时间,单位是秒(10分钟正好是600秒,应该是默认值)。
你可以打开这个文件检查:
sudo nano /etc/nfs.conf
找到[nfsd]部分,添加或修改参数:
[nfsd] tcp_idle_timeout = 3600 # 这里改成你需要的超时时间,比如1小时=3600秒
修改后重启NFS服务生效:
sudo systemctl restart nfs-kernel-server
2. TCP层面的保活机制配置
除了NFS自身的配置,系统TCP的保活参数也会影响连接是否被关闭。如果客户端没发送保活包,服务器在超时后会主动断开连接。相关的sysctl参数有三个:
net.ipv4.tcp_keepalive_time:发送第一个保活包前的空闲时间(默认通常是7200秒,也就是2小时,不过如果你的环境里这个值被改成600秒也会触发)net.ipv4.tcp_keepalive_intvl:保活包之间的间隔时间net.ipv4.tcp_keepalive_probes:尝试发送的保活包次数,超过后断开连接
你可以先查看当前值:
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
如果需要调整,编辑/etc/sysctl.d/99-nfs-tcp.conf(新建一个自定义配置文件,避免修改默认文件):
net.ipv4.tcp_keepalive_time = 1800 # 30分钟 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 10
执行以下命令让配置生效:
sudo sysctl -p /etc/sysctl.d/99-nfs-tcp.conf
另外补充下,如果你之前用的是旧版Ubuntu的NFS配置(比如/etc/default/nfs-kernel-server),现在Ubuntu 22.04已经优先读取/etc/nfs.conf的配置了,所以建议统一在这个文件里做修改哦。
备注:内容来源于stack exchange,提问作者mschanne
相关产品推荐
相关产品推荐

