我们运行一个多可用区 r4.2xlarge Mysql RDS 实例,并配置 2000 IOPS(每月额外花费 400 美元)。当我查看 CloudWatch 图表时,我可以看到大部分时间的 IOPS 都Write IOPS
超过了我们支付的 2000:
(英国工作日期间 IOPS 高于 2000)
此外,还会Read IOPS
发生一些情况,这些情况也计入预配置限制,根据文档:
总 IOPS 是读取和写入 IOPS 的总和。IOPS 的典型值范围为每秒零到数万。
能否解释一下为什么我获得的 IOPS 比我配置的要多?
我考虑的事情:
- 也许 AWS 甚至允许具有预配置 IOPS 的 RDS 实例出现 IOPS 爆发?我认为不是,因为我没有
BurstBalance
在 Cloudwatch 中看到我的实例的指标,就像我没有看到非预配置 IOPS RDS 实例一样。 - 也许 AWS 会根据 RDS 的磁盘大小添加额外的 IOPS 积分?我们有一个 500G 磁盘,如果我们使用通用 SSD,它将提供 1500 IOPS 基准性能。但我没有在文档中看到这一点。
- 也许 AWS 是根据 24 小时的平均值而不是硬性限制来限制您的 IOPS 的?
答案1
Provisioned IOPS
是保证您将获得至少比 AWS 更多的 IOPS可能如果主机有剩余容量,则允许实例使用更多容量。如果你运气不好,你可能会在同一个实例上遇到一个“吵闹的邻居”,他们可能会阻止你使用超过预配置的容量。
数据来源:我提交了 AWS 支持单,他们告诉我:
根据 AWS 资源可用性,您将能够超越已配置的 IOPS。最终,随着资源可用性变得越来越受限,WriteIOP 的数量将与已配置的数量持平,因为这是已配置卷的保证限制。
(他们还建议增强监控查看底层操作系统的指标。我没有这样做,所以不确定它有什么帮助……)
答案2
从成本角度来看,使用 1TB 磁盘更划算,因为它可以保证 3000 IOPS,而且比使用小磁盘并支付预配置 IOPS 的费用更便宜