Azure文件存储SMB缓慢列出目录中的文件

坦克104

我们有一个应用程序,可通过Azure文件列出文件夹中的文件。当我们使用C#方法时:

Directory.GetFiles(@"\\account.file.core.windows.net\xyz")

有2000个文件时,大约需要一分钟。

如果我们使用CloudStorageAccount进行相同的操作:

  CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
  CloudFileDirectory directory = fileClient.GetShareReference("account").GetRootDirectoryReference().GetDirectoryReference("abc");
  Int64 totalLength = 0;
  foreach (IListFileItem fileAndDirectory in directory.ListFilesAndDirectories())
  {
    CloudFile file = (CloudFile)fileAndDirectory;
    if (file == null) //must be directory if null
      continue;

    totalLength += file.Properties.Length;
  }

它返回所有文件,但大约需要10秒钟。为什么性能会有如此大的差异?

杰森·唐(Jason Tang)-MSFT

使用Directory.GetFiles(系统文件API)时,它实际上通过SMB协议(v2.1或v3.0取决于客户端操作系统版本)与Azure File Storage对话。但是,当切换到CloudStorageAccount时,它将通过REST与文件存储通信。如果使用Wireshark,您会发现由于协议的性质,SMB协议将在客户端和服务器之间有多个来回请求。Azure文件存储同时支持SMB和REST访问的原因是允许您的旧代码/应用程序(用于访问文件服务器托管的文件共享)现在可以与Cloud中的文件共享进行对话,而无需更改代码。

因此,根据您的情况,建议使用REST调用来访问Azure文件存储以提高性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure文件存储SMB缓慢列出目录中的文件

来自分类Dev

是否可以在Azure存储目录中列出文件

来自分类Dev

如何列出存储库中的文件/目录?

来自分类Dev

Azure 文件存储 - 列出目录内容 - 读取文件名

来自分类Dev

列出Azure Blob存储中的文件

来自分类Dev

列出目录中的文件而不列出当前目录中的文件

来自分类Dev

列出目录中的多个文件

来自分类Dev

列出主目录中的文件

来自分类Dev

在目录中列出文件,将输出存储在文件中,然后对输出中的行进行计数

来自分类Dev

在目录中列出文件,将输出存储在文件中,然后对输出中的行进行计数

来自分类Dev

仅列出当前目录中的常规文件(但不列出目录)

来自分类Dev

列出子目录中的文件,但不列出目录

来自分类Dev

列出目录中的文件但不列出子目录 PHP

来自分类Dev

使用 SMB 协议从 WebJob 访问 Azure 文件存储

来自分类Dev

PHP列出目录中的文件并删除扩展

来自分类Dev

列出多个目录中的所有文件

来自分类Dev

列出目录中不匹配模式的文件

来自分类Dev

NullPointerException:无法列出目录中的文件

来自分类Dev

从可运行的jar列出目录中的文件

来自分类Dev

如何列出和打印目录中的文件?

来自分类Dev

列出多个目录中的所有文件

来自分类Dev

列出目录C +中的文件夹

来自分类Dev

列出目录中的X个随机文件

来自分类Dev

如何移动.txt文件中列出的目录?

来自分类Dev

从可运行的jar列出目录中的文件

来自分类Dev

列出目录层次结构中的文件

来自分类Dev

重命名/重新列出目录中的文件

来自分类Dev

问题-使用-grep列出目录中的文件

来自分类Dev

一列列出目录中的文件

Related 相关文章

热门标签

归档