Azure Blob 存储流性能问题

标签 azure performance stream azure-blob-storage filestream

直到今天我的应用程序都在使用本地 zip 文件, 意思是我使用的是直接返回new FileStream() 在应用程序中以及位于 SDD/网络驱动器路径上的本地 zip 文件(zip 文件可能有数百 GB)。

我将应用程序配置为使用 Azure Blob 存储,这意味着现在返回的每个 FileStream 作为 Azure Blob SDK 方法返回:

GetBlobStreamAsync(ContainerName, BlobName).ConfigureAwait(false).GetAwaiter().GetResult()

我将一些 zip 文件上传到 Blob 存储中的容器,并在应用程序中设置连接字符串以使用该存储帐户。

应用程序部署并运行在位于 Azure 存储 Blob 同一区域的虚拟 Windows 计算机上。

注意:这是私有(private)云网络。

当应用程序在 Azure blob 存储上流式传输 zip 文件时,性能似乎下降了至少 8-9 倍(数百 GB 时出现问题)。

速度比较是在应用程序在位于同一区域的 Azure 存储帐户上运行的同一 Windows 虚拟机上的本地 C: 驱动器之间进行的。

注意:NW 带宽 - Azure 上的虚拟机上的带宽为 50 GB

我尝试过的解决方案:

  1. Azure blob 高级性能存储 - 没有提高性能
  2. .Net Core - 性能增强的优势(我们使用 .Net 框架,因此这无关紧要)。
  3. Azure Blob 存储中的网络文件系统 (NFS) 3.0 性能注意事项 -(不适用于私有(private)云)。
  4. blob 数据的热、冷和存档访问层 - 默认为热,因此我们已经尝试过此方案,没有任何改进

我想尝试的解决方案:

  1. Azure 文件共享存储作为缓存解决方案
  2. .Net Framework 配置 - 列出了几个可用于显着提高性能的快速配置设置

问题:

有人对如何优化 Azure 存储 Blob 前面的流有任何建议吗?

最佳答案

Azure 文件(共享)或存储 Blob 服务可能不适合此方案。有两种可能的路径:

  1. 将单个文件拆分为多个文件,并利用存储 Blob 服务来处理吞吐量,该服务比 Azure 文件更好。 Azure 文件对于用户文档(PDF、Word、Excel 等)中常见的小文件表现更好
  2. 如果无法将单个文件分解为多个 blob,请切换到专为大型数据传输而设计的更专用的服务。

对每个选项的建议将在很大程度上取决于系统的实现细节、要求和约束。

关于Azure Blob 存储流性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71063094/

相关文章:

c# - BinaryReader,按 block 读取,ArgumentException,偏移量和长度超出范围

Delphi局部变量内存管理(使用ZLib进行流压缩)

Azure 服务网络协议(protocol)

Azure Functions 连接到本地 SQL Server

azure - 用于白名单的 Azure 存储 blob IP 范围是多少

c++ - 如何在 C++ 中向量化 for 循环?

performance - Julia 类型不稳定 : Array of LinearInterpolations

php - 使用 PHP 构建 XML - 考虑性能

php - 在PHP中使用fsockopen与gmail imap服务器通信时出现问题

azure - 从 azure 函数创建 azure 不记名 token