1. 检查当前 nfsd 线程状态
# 查看当前 nfsd 线程数
cat /proc/net/rpc/nfsd | grep th# 查看 NFS 服务器状态
nfsstat -s# 查看当前 NFS 连接
ss -tnp | grep :2049
2. 临时增加 nfsd 线程数
# 查看当前线程数(默认通常是 8)
echo $(cat /proc/fs/nfsd/threads)# 增加线程数(例如增加到 64)
echo 64 > /proc/fs/nfsd/threads# 验证修改结果
cat /proc/fs/nfsd/threads
3. 永久修改 nfsd 线程数
方法一:使用 systemd 服务配置(推荐)
# 创建或编辑 nfs-server 的配置文件
sudo mkdir -p /etc/systemd/system/nfs-server.service.d/
sudo nano /etc/systemd/system/nfs-server.service.d/override.conf
添加以下内容:ini
[Service]
ExecStart=
ExecStart=/usr/sbin/rpc.nfsd -N 2 -N 3 -N 4 128
方法二:在 /etc/sysconfig/nfs 中配置(RHEL/CentOS)
# 编辑 nfs 配置文件
sudo nano /etc/sysconfig/nfs# 添加或修改以下行
RPCNFSDCOUNT=64
方法三:在 /etc/default/nfs-kernel-server 中配置(Debian/Ubuntu)
# 编辑 nfs 配置文件
sudo nano /etc/default/nfs-kernel-server# 添加或修改以下行
RPCNFSDCOUNT=64
4. 重启 NFS 服务使配置生效
# 重新加载 systemd 配置
sudo systemctl daemon-reload# 重启 NFS 服务
sudo systemctl restart nfs-server # 或 nfs-kernel-server# 检查服务状态
sudo systemctl status nfs-server
5. 优化内核参数(可选)
如果连接数非常大,可能还需要调整相关内核参数:
# 临时修改
echo 65536 > /proc/sys/net/core/somaxconn
echo 2097152 > /proc/sys/net/ipv4/tcp_max_syn_backlog# 永久修改,在 /etc/sysctl.conf 中添加:
sudo nano /etc/sysctl.conf
添加以下内容:
net.core.somaxconn = 65536
net.ipv4.tcp_max_syn_backlog = 2097152
fs.file-max = 65536
应用修改:
sudo sysctl -p
6. 监控和诊断
# 监控 nfsd 线程使用情况
watch -n 1 'cat /proc/net/rpc/nfsd | grep th'# 查看 NFS 性能统计
nfsstat -o all# 监控 NFS 连接数
watch -n 1 'ss -tnp | grep :2049 | wc -l'
建议的线程数设置
- 小型环境:16-32 个线程
- 中型环境:32-64 个线程
- 大型/高并发环境:64-256 个线程
根据你的实际负载情况逐步调整,监控系统资源使用情况(CPU、内存),避免设置过高导致资源浪费。
完成上述配置后,建议观察一段时间,确认错误信息是否消失,并根据实际性能表现进行进一步优化。