nfs故障排查
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、內存),避免設置過高導致資源浪費。
完成上述配置后,建議觀察一段時間,確認錯誤信息是否消失,并根據實際性能表現進行進一步優化。

浙公網安備 33010602011771號