NFS4 客户端 rpc 调用同一命令的次数不同

NFS4 客户端 rpc 调用同一命令的次数不同

我在虚拟环境中有几台 ubuntu 服务器(vmware 上的 Ubuntu 16.04 + 22.04)。有一个 NFS 挂载到位于不同网络中的 NFS 共享。现在,如果我对此 NFS 共享执行任何命令(find /var/tmp/test001 -type f)或“(tar -czf /var/tmp/test001/test001.tar /var/tmp/test001/subdirectory),执行该命令所需的时间会因同一命令而异。

例如,第一次很快。然后就慢了。然后又快了。

这似乎与执行命令时可以使用“nfsstats -Z”观察到的 rpc 调用次数有关。

例子:

1 分钟内完成 50,000 次 rpc 调用

100,000 次 rpc 调用耗时 2 分钟

25,000 次 rpc 调用耗时 30 秒

这是 NFS4 挂载:

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)

您知道为什么对同一命令进行的 prc 调用次数会有所不同吗?我还观察了它是否与调用类型(getattr、readdir、open、close)有关,但这并不表示有任何影响。时间的关系是调用次数。如果我使用 tcpdump 检查数据包,也会得到同样的观察结果。您还会看到每次调用的次数不同。

NFS 共享上有很多文件夹和大约 15,000 个文件

RPC 调用执行 19 秒

执行 9 秒的 RPC 调用

答案1

问题不在于 RPC 协议或 NFS 共享。而是数据中心的接线不良。只有少数 ESXi 主机受到影响。它们的延迟量是原来的 3 倍。2 倍的延迟量可以通过其中一个 DC 的地理位置来解释

相关内容