好吧,首先,让我说我不是一个操作人员,而是一个开发人员。 所以我在这里进入一个未知的土地,所以请忍受我。
我想使用Azure虚拟机从1.9 GB的zip文件中提取50 GB的XML文件。 所以我一直在testingAzure上的哪个实例大小,以便获得更好的性能,同时不会超出我的需要。
然而,Azure虚拟机的磁盘性能并不是很好,我想知道是我做错了什么,或者如果我的结果是可以预料的。
首先,我一直在testing什么? 我有一个自定义的.NET控制台应用程序,它只是将一个zip文件作为参数,然后立即开始将zip文件解压缩到zip文件所在的相同目录中。解压缩过程中,应用程序计算有多less兆字节应用程序每秒都写入目标文件并输出。
在我的本地开发机器上,我用这个应用程序获得了非常好的性能,编写160-210 MB / s。 所以整个提取过程大约需要8分钟。 我的本地机器的规格是英特尔酷睿i7 950,3 GHz,4核心(8逻辑),12 GB内存,三星SSD 830系列250 GB。
好的,所以我开始testing不同的实例大小,这是我的结果。
在D2和D1实例上,磁盘性能比D3差。
而这真的让我感到惊讶。 本地SSD磁盘如何在D1,D2和D3实例上执行得如此糟糕? 有没有人知道为什么D1到D4的磁盘性能差距如此之大? 这是一个记忆问题? 当我在提取操作系统的时候查看任务pipe理器的时候,内存的使用情况是爆炸性的。 我怀疑这是因为Windows正在caching写入的数据,但是当内存不足时,它必须将数据刷新到磁盘。 发生这种情况时,磁盘性能下降。 但是这不会发生在我的本地机器上,那么为什么这些虚拟机需要这样的攻击性caching呢?
我知道我的本地计算机和托pipe在Azure中的虚拟机之间存在差异,但是我正在经历的磁盘性能真的是预期的吗?
(我最初在Stackoverflow上发布了我的问题 ,因为我怀疑这是我的应用程序,但是我不太清楚)
在这里参加派对的时间已经晚了,但是对于Azure中值得“附加”的固态硬盘,他们的IOP根据机器大小进行节stream。 这个价格在任何地方都没有提到,但是当我把这个问题提交给下面的博客文章的时候,我提出了这个问题作为技术支持的票。
看到这个链接: http : //azure.microsoft.com/blog/2014/10/06/d-series-performance-expectations/
也许这跟记忆没有关系 Azure上的“物理”磁盘使用所谓的Blob存储,这就是性能与您的本地计算机(即使使用类似硬件)性能不一样的原因。 您可以在此链接中find更多信息。 这似乎是严重依赖磁盘性能的SQL Server社区的常见问题。 我会引用我发现的一篇文章
Azure虚拟机中的SQL Server性能指南白皮书中提到(第15和26页),在Azure虚拟机中,可以使用存储空间来提高SQL Server工作负载的存储性能
存储空间是Windows Server 2012的内置function,可让您使用多个物理磁盘创build单个虚拟磁盘,从而解决VM磁盘本身的I / O限制问题。 再次引用:
对于支持很多(最多16个)物理磁盘的较大VM,存储性能的显着提高是可能的。 这可以使Azure成为许多SQL工作负载的可行平台,否则将受到单个Azure磁盘的I / O性能限制。
本文将向您展示创build存储空间的步骤。
你应该先尝试一下。 可能甚至可以使用较小的实例,因为存储服务是实例本身的单独服务。