我们有一个使用 mount cifs -t 的 Linux 客户端,目录之间的浏览速度非常慢,有时仅列出文件夹就需要 1-3 分钟。
共享位于 Windows 服务器上。Windows 客户端不存在此问题。
如果我们在虚拟机上安装新版本的 Ubuntu,我们可以重现该问题。
需要注意的一点是,该用户通过 MPLS 从远程办公室以 100 Mbps 的连接连接到我们的数据中心。
延迟为 50 毫秒。
我能做些什么来解决这个问题?有什么建议吗?
我们最初遇到的性能问题是传输速率锁定在 1 MB/秒;但是,如果我们将 vers=3.02 添加到 mount cifs 命令中,传输速率就可以上升到 11 Mb/秒。
剩下的唯一问题是文件夹之间的切换滞后。
如果我们从终端运行 ls,它会有相同的延迟,有时需要 2 分钟才能显示 ls 列表。
如果我们运行 sudo ls,目录列表是即时的,不确定为什么或者我们是否可以做些什么来缓解这个问题。
运行 ls -R 确实显示了该问题.. sudo ls -R 基本上是即时的。
如果我们在 MPLS 网络上将另一张地图设置到不同的位置,且延迟为 25 毫秒,则问题就消失了,浏览变得即时。
请帮助。
答案1
完整ls
文档(info '(coreutils) ls invocation'
或在线版本),有一个可能的解决方案:
Note that using the ‘--color’ option may incur a noticeable
performance penalty when run in a directory with very many entries,
because the default settings require that ‘ls’ ‘stat’ every single
file it lists. However, if you would like most of the file-type
coloring but can live without the other coloring options (e.g.,
executable, orphan, sticky, other-writable, capability), use
‘dircolors’ to set the ‘LS_COLORS’ environment variable like this,
eval $(dircolors -p | perl -pe \
's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)
and on a ‘dirent.d_type’-capable file system, ‘ls’ will perform
only one ‘stat’ call per command line argument.
如果您添加网络开销来stat
处理整个目录中的所有内容,那么您的延迟就开始变得可以理解了。
或者,您可以使用 的调用ls
,--color=off
或者不使用--color
。