Mongodb Azure虚拟机磁盘IOPS性能与AWS

Mongodb Azure虚拟机磁盘IOPS性能与AWS,mongodb,azure,amazon-web-services,Mongodb,Azure,Amazon Web Services,我有一个大约200GB数据的MongoDB副本集 目前,AWS中存在两个medium.m3实例1 core,3.7GB。我需要将其移动到Azure A2实例2核心,3.5GB,但是我担心性能 在AWS中,我每台机器有一个磁盘,通过EBS的220GB SSD,提供660IOPS或AWS中的任何含义 根据Azure的说法,我应该得到,所以我认为性能会相当,但以下是Azure上mongoperf的结果: Azure mongoperf Output: { nThreads: 2, fileSizeMB

我有一个大约200GB数据的MongoDB副本集

目前,AWS中存在两个medium.m3实例1 core,3.7GB。我需要将其移动到Azure A2实例2核心,3.5GB,但是我担心性能

在AWS中,我每台机器有一个磁盘,通过EBS的220GB SSD,提供660IOPS或AWS中的任何含义

根据Azure的说法,我应该得到,所以我认为性能会相当,但以下是Azure上mongoperf的结果:

Azure mongoperf Output:
{ nThreads: 2, fileSizeMB: 1000, r: true }
creating test file size:1000MB ...
testing...
optoins:{ nThreads: 2, fileSizeMB: 1000, r: true }
wthr 2
new thread, total running : 1
read:1 write:0
64 ops/sec 0 MB/sec
82 ops/sec 0 MB/sec
85 ops/sec 0 MB/sec
111 ops/sec 0 MB/sec
95 ops/sec 0 MB/sec
106 ops/sec 0 MB/sec
96 ops/sec 0 MB/sec
112 ops/sec 0 MB/sec
new thread, total running : 2
read:1 write:0
188 ops/sec 0 MB/sec
195 ops/sec 0 MB/sec
223 ops/sec 0 MB/sec
137 ops/sec 0 MB/sec
222 ops/sec 0 MB/sec
212 ops/sec 0 MB/sec
200 ops/sec 0 MB/sec
虽然我的AWS medium.m3实例的性能完全不同:

AWS mongoperf Output:
{ nThreads: 2, fileSizeMB: 1000, r: true }
creating test file size:1000MB ...
testing...
optoins:{ nThreads: 2, fileSizeMB: 1000, r: true }
wthr 2
new thread, total running : 1
read:1 write:0
3149 ops/sec 12 MB/sec
3169 ops/sec 12 MB/sec
3071 ops/sec 11 MB/sec
3044 ops/sec 11 MB/sec
2688 ops/sec 10 MB/sec
2880 ops/sec 11 MB/sec
3039 ops/sec 11 MB/sec
3020 ops/sec 11 MB/sec
new thread, total running : 2
read:1 write:0
3133 ops/sec 12 MB/sec
3044 ops/sec 11 MB/sec
3052 ops/sec 11 MB/sec
3016 ops/sec 11 MB/sec
2928 ops/sec 11 MB/sec
3041 ops/sec 11 MB/sec
3061 ops/sec 11 MB/sec
3025 ops/sec 11 MB/sec
如何通过Azure实现与通过AWS相同的性能?我已经查看了提供500GB本地SSD存储的D*实例,但是这些磁盘是短暂的,因此不适合托管我的数据库


编辑:我可以看到我可以在D*实例上附加额外的高级存储驱动器,但是与AWS相比,这些驱动器的成本是巨大的,看起来在高性能IO方面,您仍然无法击败AWS的成本。

我采取的方法是附加服务器可以支持的最大驱动器,对于A2标准,这是4个驱动器

我有4个200GB驱动器,这些驱动器放置在RAID0阵列中,提供约800GB的存储空间。 RAID0允许我将500 IOPS的总速度合并为2000 IOPS的理论最大速度

这现在导致mongoperf的A2机器上的速度如下,由于某些原因,单线程性能非常低,包括测试文件写入速度仅为150 IOPS。在10个线程的情况下,速度超过了AWS实例,但是我不确定Azure中是否有某种readahead缓存在实际的DB场景中不适用。AWS上的性能不会随线程数的增加而改变

Azure Performance:
{ nThreads: 10, fileSizeMB: 1000, r: true }
creating test file size:1000MB ...
testing...
optoins:{ nThreads: 10, fileSizeMB: 1000, r: true }
wthr 10
new thread, total running : 1
read:1 write:0
125 ops/sec 0 MB/sec
194 ops/sec 0 MB/sec
174 ops/sec 0 MB/sec
213 ops/sec 0 MB/sec
138 ops/sec 0 MB/sec
117 ops/sec 0 MB/sec
174 ops/sec 0 MB/sec
92 ops/sec 0 MB/sec
new thread, total running : 2
read:1 write:0
354 ops/sec 1 MB/sec
359 ops/sec 1 MB/sec
322 ops/sec 1 MB/sec
408 ops/sec 1 MB/sec
440 ops/sec 1 MB/sec
265 ops/sec 1 MB/sec
472 ops/sec 1 MB/sec
484 ops/sec 1 MB/sec
new thread, total running : 4
read:1 write:0
read:1 write:0
984 ops/sec 3 MB/sec
915 ops/sec 3 MB/sec
1419 ops/sec 5 MB/sec
1669 ops/sec 6 MB/sec
1934 ops/sec 7 MB/sec
1660 ops/sec 6 MB/sec
1348 ops/sec 5 MB/sec
1735 ops/sec 6 MB/sec
new thread, total running : 8
read:1 write:0
read:1 write:0
read:1 write:0
read:1 write:0
4041 ops/sec 15 MB/sec
5370 ops/sec 20 MB/sec
5643 ops/sec 22 MB/sec
5639 ops/sec 22 MB/sec
4388 ops/sec 17 MB/sec
6093 ops/sec 23 MB/sec
6350 ops/sec 24 MB/sec
6961 ops/sec 27 MB/sec
new thread, total running : 10
read:1 write:0
read:1 write:0
9684 ops/sec 37 MB/sec
11528 ops/sec 45 MB/sec
13807 ops/sec 53 MB/sec
16666 ops/sec 65 MB/sec
16306 ops/sec 63 MB/sec
24292 ops/sec 94 MB/sec
24264 ops/sec 94 MB/sec
19358 ops/sec 75 MB/sec
28067 ops/sec 109 MB/sec
43151 ops/sec 168 MB/sec
45165 ops/sec 176 MB/sec
44847 ops/sec 175 MB/sec
43806 ops/sec 171 MB/sec
43103 ops/sec 168 MB/sec
43477 ops/sec 169 MB/sec
44651 ops/sec 174 MB/sec
45365 ops/sec 177 MB/sec
41495 ops/sec 162 MB/sec
45281 ops/sec 176 MB/sec
47014 ops/sec 183 MB/sec
46056 ops/sec 179 MB/sec
45418 ops/sec 177 MB/sec
42363 ops/sec 165 MB/sec
43974 ops/sec 171 MB/sec
在高读IO的结尾,这给了我iostat非常奇怪的数字:

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
sdd           10885.07     43540.30         0.00      87516          0
sde           10958.21     43832.84         0.00      88104          0
sdf           10960.70     43842.79         0.00      88124          0
sdc           10920.40     43681.59         0.00      87800          0
md127         43722.89    174891.54         0.00     351532          0
然而:当我做一个读写操作的mongoperf时,执行从悬崖上掉下来,AWS的速度仍然保持不变

Azure with read and write mongoperf
new thread, total running : 10
read:1 write:1
read:1 write:1
126 ops/sec 0 MB/sec
84 ops/sec 0 MB/sec
150 ops/sec 0 MB/sec
123 ops/sec 0 MB/sec
84 ops/sec 0 MB/sec
190 ops/sec 0 MB/sec
179 ops/sec 0 MB/sec
108 ops/sec 0 MB/sec
171 ops/sec 0 MB/sec
192 ops/sec 0 MB/sec
152 ops/sec 0 MB/sec
103 ops/sec 0 MB/sec
163 ops/sec 0 MB/sec
116 ops/sec 0 MB/sec
121 ops/sec 0 MB/sec
76 ops/sec 0 MB/sec

这应该在ServerFault上,因为它是关于基础设施的。这就是说:虽然您提到的D系列具有短暂的SSD,但DS系列允许持久的三重复制SSD磁盘连接,具有128GB磁盘,速度为500IOPS和100MB/s;512gb磁盘,2300IOPS和150MB/s;以及1TB磁盘,速度为5000 IOPS和200MB/s。根据虚拟机的大小和连接的高级存储SSD磁盘的数量,单个虚拟机上的IOPS可以达到64000以上。您是正确的。与AWS相比,性能不尽相同。我现在也被要求在Azure上工作,但我曾经使用AWS。我在多分片环境中使用A4虚拟机,在模拟RAID 0配置中使用2 TB存储池。这相当于2.6.x中约1 TB的真实数据,因为我们的索引相当大。我们还没有在实践中探索SSD的使用,这主要是由于时间的原因,但也因为正如您所说,SSD是短暂的。我们以前使用A3大小的虚拟机,但由于复制滞后,我们正在探索更大的虚拟机。谢谢@DavidMakogon,我知道你是对的,但是与AWS相比,这些虚拟机的价格非常高。我更想知道我到底做错了什么,AWS承诺的IOPS是660,Azure是500,为什么mongoperf在每个环境中的表现如此不同?我同意你在定价问题上的最后一个假设。微软不擅长制造便宜的东西,而亚马逊就像是便宜和笨重之王。你现在已经开始关注定价,这又一次与编程无关,我不会在这里讨论定价。我知道你正在分享你的配置和测试结果,这很好。但是这不是答案。如果有什么区别的话,那就是与你最初的问题有关的更多细节。而且,你正在比较苹果和橙子在磁盘和机器类型。与xeon cpu m3实例和SSD磁盘相比,您选择了速度最慢的A系列Azure vm类型和非SSD磁盘。我同意我正在比较两种不同的机器类型,但我正在测试两种成本相似的解决方案,这是问题的关键,因为我们需要迁移到Azure,但没有获得更多预算。