NFSv4客户端执行相同命令时RPC调用次数波动导致执行时长不一致的问题排查求助
NFSv4客户端执行相同命令时RPC调用次数波动导致执行时长不一致的问题排查求助
各位大佬好,我碰到一个很费解的NFS问题,想请教下大家的排查思路:
环境背景
- 虚拟化环境(VMware)下的两台Ubuntu服务器:分别是Ubuntu 16.04和22.04
- 跨网段挂载了一个NFSv4共享,挂载信息如下:
1.2.3.4:/path_to/remote_nfs001 on /var/tmp/test001 type nfs4 (rw,relatime,vers=4.0,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=2.3.4.5,local_lock=none,addr=1.2.3.4) - NFS客户端版本:执行
/sbin/mount.nfs4 -V输出为mount.nfs4: (linux nfs-utils 2.6.1)
问题现象
我在挂载点上执行完全相同的命令(比如find /var/tmp/test001 -type f或者tar -czf /var/tmp/test001/test001.tar /var/tmp/test001/subdirectory),每次的执行时长差异极大:
- 第一次跑速度很快,第二次突然变慢,第三次又恢复较快,完全没有固定规律
- 我用
nfsstats -Z实时观察RPC调用次数,发现时长和调用次数直接挂钩:- 触发5万次RPC调用时,耗时约1分钟
- 触发10万次RPC调用时,耗时约2分钟
- 触发2.5万次RPC调用时,仅耗时30秒
- 同时用tcpdump抓包验证,也能看到每次命令触发的RPC调用数量确实不一样
- 补充:目标NFS共享里有大量子文件夹,文件总数大概在1.5万左右
我特意留意过RPC调用的类型(比如getattr、readdir、open、close),但看起来调用类型并没有对时长产生明显影响,核心规律就是RPC调用次数越多,命令执行耗时越长。
求助问题
有没有大佬知道为什么相同的命令会触发不同数量的RPC调用?或者有什么具体的排查方向可以推荐给我?
备注:内容来源于stack exchange,提问作者nussi
相关产品推荐
相关产品推荐

