我有一台服务器,用于托管图像并允许一个客户端通过 NFS 访问一个目录。
该目录包含大约 70K 个图像,大小为 12GB。
当我在托管 NFS 目录的服务器上执行类似cp
或的命令时,性能非常出色,但是当从 NFS 目录上的客户端执行或命令时,有时会变得非常慢,其中很慢而时间很快:rm
cp
rm
real time
user
sys
real 1m33.409s
user 0m0.000s
sys 0m0.000s
我的假设是:
- 该目录以某种方式被锁定,从而导致长时间等待
- 两台服务器之间的连接不太可靠
这是来自客户的转储nfsstat -c
Client rpc stats:
calls retrans authrefrsh
3018431 1 3018571
答案1
您应该noatime
在客户端挂载远程文件系统时尝试该选项。
从man 8 mount
noatime - Do not update inode access times on this
filesystem (e.g., for faster access on the news spool
to speed up news servers).
就我而言,它大大提高了写入性能。
答案2
配置:
尝试使用异步而不是同步进行导出。这样,您就不必等待对发出的每个命令的确认(想想这可能会对您的情况中的数据完整性产生的影响)。
联网:
- 确保两个链路都运行全双工,并且如果可能的话,整个网络都启用了巨型帧。确保所有设备和交换机都具有相同的设置,否则您将遇到碎片问题。
- 使用 Wireshark 或其他工具检查 UDP 碎片。
来源