Azure 虚拟机磁盘性能缓慢

Azure 虚拟机磁盘性能缓慢

好的,首先,请允许我声明,我并不是一名运营人员,而是一名开发人员。因此,我在这里要讲一些我不太熟悉的内容,所以请耐心听我说完。

我想使用 Azure 虚拟机从 1.9 GB 的 zip 文件中提取 50 GB 的 XML 文件。因此,我一直在测试应该使用 Azure 上的哪种实例大小才能获得良好的性能,同时又不会支付超出我所需的费用。

但是,Azure VM 的磁盘性能并不出色,我想知道是不是我做错了什么,或者我的结果是否符合预期。

首先,我一直在测试什么?我有一个自定义的 .NET 控制台应用程序,它什么也不做,只是将 zip 文件作为参数,并立即开始将 zip 文件提取到 zip 文件所在的同一目录中。在提取过程中,应用程序会计算应用程序每秒向目标文件写入了多少兆字节并将其输出。

在我的本地开发机器上,这个应用程序的性能相当不错,写入速度为 160-210 MB/s。因此整个提取过程大约需要 8 分钟。我的本地机器的规格是 Intel Core i7 950、3 GHz、4 核(8 个逻辑核)、12 GB RAM、Samsung SSD 830 系列 250 GB。

好的,我开始测试不同的实例大小,这是我的结果。

  • 在安装了 Windows Server 2012 Datacenter R2(8 核,14 GB RAM)的 A4 实例上,使用同一个存储帐户,带有 4 个虚拟磁盘的条带化 RAID,没有主机缓存,我获得了稳定的 30-35 MB/s,这意味着整个提取过程耗时 24 分 48 秒。我还尝试启用主机缓存,但并没有什么不同。
  • 在装有 Windows Server 2012 Datacenter(8 核、28 GB RAM、500 GB 本地 SSD 磁盘)的 D4 实例上,前几分钟我获得了非常好的性能(150+ MB/s),然后性能变化,峰值为 200 MB/s,谷值为 9 MB/s。平均性能在 70 到 100 MB/s 之间。提取耗时 9 分 40 秒。
  • 在具有 Windows Server 2012 Datacenter(4 核、14 GB RAM、250 GB 本地 SSD 磁盘)的 D3 实例上,我在第一分钟获得了非常好的性能(150+ MB/s),但随后性能下降到稳定的 20-40 MB/s,使提取过程花费 21 分 49 秒。

在 D2 和 D1 实例上,磁盘性能比 D3 差。

这真的让我很惊讶。本地 SSD 磁盘的性能怎么会像在 D1、D2 和 D3 实例上那样差?有谁知道为什么 D1 到 D4 之间的磁盘性能差异如此之大?是内存问题吗?当我在提取操作系统运行时查看任务管理器时,内存使用量正在激增。我怀疑这是因为 Windows 正在缓存写入的数据,但当内存不足时,它必须将数据刷新到磁盘。当发生这种情况时,磁盘性能会下降。但这不会发生在我的本地机器上,那么为什么这些虚拟机上需要如此激进的缓存呢?

我知道我的本地计算机和 Azure 中托管的虚拟机之间存在差异,但是我所体验到的磁盘性能真的是预期的吗?

(我最初发布我在 Stackoverflow 上的问题,因为我怀疑是我的应用程序导致了这个问题。但现在我不太确定了)

答案1

有点晚了,但 Azure 中“附加”的 SSD 的 IOP 会根据机器大小进行限制。定价中没有提到这一点,但当他们向我推荐下面的博客文章时,我以工单的形式向技术支持提出了这个问题。

请参阅此链接: http://azure.microsoft.com/blog/2014/10/06/d-series-performance-expectations/

答案2

也许与内存无关。Azure 上的“物理”磁盘使用所谓的 Blob 存储,这就是即使使用类似的硬件,其性能也不如本地计算机的原因。您可以在此处找到更多信息关联。这似乎是严重依赖磁盘性能的 SQL Server 社区的常见问题。我将引用我找到的一篇关于它的文章

Azure VM 中的 SQL Server 性能指南白皮书提到(第 15 页和第 26 页),在 Azure VM 中,存储空间可用于提高 SQL Server 工作负载的存储性能

存储空间是 Windows Server 2012 的内置功能,可让您使用多个物理磁盘创建一个虚拟磁盘,从而解决 VM 磁盘本身的 I/O 限制问题。再次引用:

使用支持多个(最多 16 个)物理磁盘的大型虚拟机,可以显著提高存储性能。这可以使 Azure 成为许多 SQL 工作负载的可行平台,否则这些工作负载会受到单个 Azure 磁盘的 I/O 性能的严重限制。

本文将向您展示创建存储空间的步骤。

您应该先尝试一下。也许您甚至可以使用较小的实例,因为存储服务是与实例本身分开的服务。

相关内容