我在虚拟环境中有几台 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 个文件
答案1
问题不在于 RPC 协议或 NFS 共享。而是数据中心的接线不良。只有少数 ESXi 主机受到影响。它们的延迟量是原来的 3 倍。2 倍的延迟量可以通过其中一个 DC 的地理位置来解释