Azure 虚拟机上的磁盘性能缓慢

Ren*_*ené 9 windows performance storage 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,三星 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 数据中心(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 数据中心(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 上发布了我的问题,因为我怀疑这是我的应用程序造成的。但我不再那么确定了)

Ric*_*uer 7

在这里参加聚会有点晚,但是对于 Azure 中“附加”的 SSD 的价值,它们的 IOP 会根据机器大小进行限制。它没有在任何地方的定价中提及,但是当他们将我推荐给下面的博客文章时,我将这个问题作为技术支持的票提出来。

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