過往調整NFS daemon (nfsd)數目是去修改/etc/default/nfs-kernel-server裡面的參數 RPCNFSDCOUNT,但是這招在Ubuntu 22.04上已經失效。要檢查目前系統在執行的NFS daemon有幾隻,用下列指令:
- ps -ef | grep "\[nfsd\]" -c
至於有多少個客戶端連線,則可用下面的指令:
- netstat -nt | grep :2049 -c
在Ubuntu 22.04之後,設定NFS daemon (nfsd)的數目要調整/etc/nfs.conf裡面的threads,例如說以下的範例就是開啟128隻nfsd:
- threads=128
修改完成後,用下列指令重開nfsd:
- sudo systemctl restart nfs-server.service
用上述指令會重開服務包含了nfs-mountd, nfs-idmapd, rpc-svcgssd。另外一個指令(不一定要做,除非相關設定也改掉了):
- sudo systemctl restart nfs-utils.service
則是會重開nfs-blkmap, rpc-gssd, rpc-statd, rpc-svcgssd。單純修改daemon數目不用改。相關的服務與設定則可以參考來自Ubuntu.com的表格
至於說要開多少個nfsd,端看有可能的連線有多少個。在SUSE上面如果連接port 2049的數目超過[(number of threads + 3) * 20],以預設的8 threads來算就是220個連線,就會出現下列的錯誤訊息
kernel: nfsd: too many open TCP sockets, consider increasing the number of nfsd threads
所以說128 threads會有(128 + 3) * 20 = 2,620個TCP連線才會不夠用。
參考資料
- RPCNFSDCOUNT is ignored on Ubuntu Server 22.04.1
- Network File System (NFS)@Ubuntu.com:找到Ubuntu Server 22.04 LTS (“jammy”)那段,有說明現在是用/etc/nfs.conf來做控制。也有說明/etc/nfs.conf還包含了哪些service的服務。
- kernel: nfsd: too many open TCP sockets, consider increasing the number of threads@SUSE
- Optimal Number of nfsd Threads (RPCNFSDCOUNT)@Red Hat Enterprise Linux:nfsd的loading可以參考/proc/net/rpc/nfsd裡面的數值來決定
_EOF_
沒有留言:
張貼留言