前言
最近进行的一个项目中有对关系型数据库的大量读写任务,在亚马逊 AWS 上的 Lightsail 主机的 IO 性能很快成为了瓶颈并且也导致了 CPU 在一些情况下的高占用。对硬盘的选择是必须考虑的事项,因为无论是在 EC2/ Lightsail 主机上自行搭建数据库还是直接选择 AWS RDS 服务都不得不自行选择 EBS 类型,从而决定数据库的 IO 性能。因此针对 AWS 提供的几种储存方案进行了价格和性能上的对比。
注意事项
- 在本文中,基础价格将按照 EC2 云服务器的价格为标准
- 区域默认为
Asia Pacific (Tokyo)
- 理论值意味着加钱
EBS - 通用型 SSD gp2
价格
gp2 卷按照每月预置的储存空间量(GB)计费,I/O 价格已包含
每 GB 每月价格为
$0.142
- 30GB 的价格预估为
$2.4
- 30GB 的价格预估为
IO 性能
- gp2 理论最大的 IOPS 为
16000
- gp2 理论最大硬盘吞吐量为
250 MB/s
gp2 的 IO 性能是
IOPS基准性能+IOPS突发性能
- 16 KB I/O
- gp2 基准性能为 3 倍的 gp2 卷容量,但即使是 1GB 的最小 gp2 容量也有 100 IOPS 的性能
无论 gp2 卷容量大小如何,突发性能均为 3000 IOPS
- 突发性能的总量取决于 I/O 突发性能余额,该余额在 EBS 没有 I/O 使用时自动积累
- 如果 gp2 卷的基准性能已经大于 3000 IOPS,则不会消耗任何突发性能余额
- 每个卷在被创建时会初始化 540 万 I/O 突发性能余额,这也是一个卷能获得最大 I/O 突发性能余额,它能维持 30 分钟的 3000 IOPS
- IO 突发性能的 3000 IOPS 的可用时间可以用公式 (I/O 突发性能余额/ (3000 - 3 * gp2 卷容量(GB)) 来计算
- 突发性能余额的积攒速度取决于 gp2 卷的容量大小,积攒速度等同为基准 I/O 速度
- 基于以上信息我们可以获得这样的一张表
gp2卷大小 | 基准IOPS | 3000 IOPS 爆发持续秒数 | 填补I/O突发性能余额所需要的无I/O秒数 |
---|---|---|---|
1 GB | 100 | 1,802 | 54,000 |
100 GB | 300 | 2,000 | 18,000 |
250 GB | 750 | 2,400 | 7,200 |
334 GB | 1,002 | 2,703 | 5,389 |
500 GB | 1,500 | 3,600 | 3,600 |
750 GB | 2,250 | 7,200 | 2,400 |
1000 GB | 3,000 | 0 | 0 |
5334 GB | 16,000 | 0 | 0 |
16384 GB | 16,0000 | 0 | 0 |
- 334 GB 为可实现最大吞吐量的最小卷容量)
- 5334 GB 位可实现理论最大I/O性能的最小卷容量
- 16384 GB 为gp2卷可支持的最大卷大小,即16 TB
- 当gp2卷大小超过1000 GB时,由于基准性能大于3000 IOPS,所以不消耗突发性能
吞吐量性能
- 已知 gp2 卷的理论最大吞吐量为 250MB/s
硬盘吞吐量的性能取决于 I/O 性能,具体公式为:
- 吞吐量 T (MB/S) = 卷容量 V (GB) 每 GB IOPS 速率性能 R I/O 大小 I (KB)
- T = VIR, V = T/IR = 250 MB/S /(256 KB * 3 IOPS/ GB) = 333.33 GB
- 当 gp2 卷容量达到
334 GB
时即可获得最大硬盘吞吐量性能
- 容量小于 170 GB 的 gp2 卷可以获得最大
128MB/s
的 gp2 最低吞吐量性能
EBS - 通用型 SSD gp3
EBS gp3 卷是 AWS 在 2020 年年底推出的新型,针对高性能,低储存容量需求应用程序的 EBS 卷类型。它允许用户不仅自定义储存容量还可以在低储存容量情况下加钱以获得更高的 I/O 性能硬盘吞吐量
- 对的,就是包含关系型数据库这种应用
价格
每月每 GB 储存容量价格为
$0.096
- 包含免费的
3000 IOPS
和125MB/s
吞吐量 - 30GB 的价格预估为
$2.88
- 包含免费的
- 如果用户自定义超过
3000 IOPS
的 I/O 性能,价格为每 IOPS$ 0.006
如果用户自定义超过
125MB/s
的吞吐量,价格为每 MB/s$ 0.048
- 1 GB 储存容量配合
6000 IOPS
和250 MB/s
的每月价格为$20
- 1 GB 储存容量配合
I/O 和硬盘吞吐量性能
- gp2 理论最大的 IOPS 为
16000
- gp2 理论最大硬盘吞吐量为
1000 MB/s
gp3 卷的 IOPS 和吞吐量性能为恒定性能,因此也不包含突发性能
- 所以也可以持续地保持在 3000 IOPS 和 125 MB/s 的吞吐量
EBS - 预置 IOPS SSD io1/ io2
如名字一样,io1 型卷是预配置 I/O 性能的 EBS 卷类型,适用于 I/O 密集型数据库和持续高 IOPS 应用
io1 价格
每月每 GB 的预置储存容量价格为
$ 0.142
- io1 支持的卷容量大小区间为 4 GB ~ 16 TB
每月每 IOPS 的预置性能价格为
$ 0.074
- 30GB 储存容量配合
3000 IOPS
的价格为每月$ 196.25
- 30GB 储存容量配合
io2 价格
每月每 GB 的预置储存容量价格为
$ 0.142
- io1 支持的卷容量大小区间为 4 GB ~ 16 TB
每月每 IOPS 的预置性能价格阶梯化
- 32000 IOPS 内,每月每预置 IOPS 价格为
$ 0.074
- 32001 <= IOPS <= 64000, 每月每预置 IOPS 价格为
$ 0.052
- IOPS > 64000,每月每预置 IOPS 价格为
$ 0.036
- 32000 IOPS 内,每月每预置 IOPS 价格为
I/O 和吞吐量性能
io1 和 io2 卷理论最大支持的 IOPS 为
64000
- 64000 IOPS 的 EBS 需要对应机器服务支持
AWS Nitro System
- 64000 IOPS 的 EBS 需要对应机器服务支持
- io1 和 io2 卷理论最大支持的吞吐量为
1000 MB/s
io1 卷和 io2 卷的区别
- io1 卷和 io2 卷的目标市场和预期用途是类似的
- io2 的预置 IOPS 价格阶梯化可以在极高 IOPS 需求下降低成本
- io2 有明显更低的 AFR
io1 的预置 IOPS 性能和卷容量大小(GB)的最大比例为
50:1
- 而 io2 的这一比例为
500:1
- 因此,当假设用户需要 64000 IOPS 时,io1 的最低容量大小必须为 1280 GB,而 io2 的最低容量大小为 128 GB
- 而 io2 的这一比例为
io2 高速卷
- 天价,不谈
Lightsail SSD
- Lightsail 主机中用的 SSD 大致和 gp3 卷类似,性能可见下方跑分对比
EC2 NVMe SSD 实例
i3 系列 EC2 主机是我特别选出来的,也是我目前正在使用的方案。在 AWS EC2 市场中,i3 系列属于储存优化型实例。相比使用常见的通用型 EC2 主机,比如 T2/ T3,加上较高性能的 gp2/gp3/io1 EBS 卷,I3 系列主机不仅直接提供了很大容量的高性能 NVMe SSD,还拥有更强的 CPU 性能和网络性能。
此处以最低配置的 I3-large 主机为例:
其包含 2 vCPU
, 15.25 GB
内存,475 GB
NVMe SSD 和最高 10 Gbps 的网络性能,在配合 30G gp2 硬盘下,东京区一个月的为 $ 94.12
。这相比使用相同容量或相同性能的 EBS 卷要便宜太多了。
I/O 性能
- AWS 官方在文档中给出了以下数据
实例大小 | 100%随机读取 IOPS | 写入 IOPS |
---|---|---|
i3.large | 100125 | 35000 |
i3.xlarge | 206250 | 70000 |
i3.2xlarge | 412500 | 180000 |
i3.4xlarge | 825000 | 360000 |
i3.8xlarge | 165 万 | 720000 |
i3.16xlarge | 330 万 | 140 万 |
i3.metal | 330 万 | 140 万 |
i3en.large | 42500 | 32500 |
i3en.xlarge | 85000 | 65000 |
i3en.2xlarge | 17 万 | 130000 |
i3en.3xlarge | 25 万 | 200000 |
i3en.6xlarge | 50 万 | 400000 |
i3en.12xlarge | 100 万 | 80 万 |
i3en.24xlarge | 200 万 | 160 万 |
i3en.metal | 200 万 | 160 万 |
- 但需要注意的是,一些系统不支持 NVMe SSD,且实例需要 4K 对齐才能充分发挥性能
脚本跑分
gp2 30GB
gp3 30GB 免费额度
Lightsail
- 太慢了,等不及跑完了
EC2 NVMe SSD I3-large
总结
AWS 一直以来就是一个适合给企业用户或者预算充足的专业客户使用的产品,加钱不仅可以获得最先进的技术,还有优质的客户服务。对于一般个人用户而言,AWS 就显得太贵且太专业了。完整的云架构是 AWS 的优势之一,如果在主机方面的预算在每月 100 刀左右,I3 型 NVMe SSD 主机算是对团队/小型企业非常友好的一个选择了。如果一定要在 EBS 上进行专门的配置,需要对应用所需的硬盘性能条件进行调研并选择合适的 EBS 配置,否则不仅有可能无法获得需要的硬盘性能也会产生不必要的开支。
转载请标注来源