AWS RDS预置IOPS真的值得吗?

据我了解,与标准I / O速率相比,RDS预置IOPS相当昂贵。

在东京地区,标准部署的P-IOPS费率为0.15美元/ GB,0.12美元/ IOP。 ( 多可用区域部署的价格是双倍的… )

对于P-IOPS,所需的最小存储量为100GB,IOP为1000.因此,P-IOPS的起始成本为135 $,不包括实例定价。

就我而言,使用P-IOPS的成本比使用标准I / O速率高100倍。

这可能是一个非常主观的问题,但请提出一些意见。

在最优化的RDS P-IOPS数据库中,性能是否值得?

要么

AWS网站提供了关于P-IOPS如何使性能受益的一些见解。 有没有实际的基准?

自我解答

除了零斯基尔兹写的答案外,我还做了更多的研究。 不过,请注意,我不是阅读数据库基准testing的专家。 此外,基准和答案是基于EBS。

根据“罗德里戈·坎波斯” 的一篇文章 ,performance确实有了明显的提高。

从1000 IOPS到2000 IOPS,读/写(包括随机读/写)性能加倍。 根据零斯基尔兹所说,标准的EBS块提供了大约100 IOPS。 想象一下当100 IOPS达到1000 IOPS(这是P-IOPS部署的最低IOPS)时性能的改善。

结论

根据基准,性能/价格似乎是合理的。 对于性能危机的情况,我想有些人或公司应该selectP-IOPS,即使它们的收费是100倍以上。

但是,如果我是一个中小企业的财务顾问,那么我会逐渐放大(如CPU,内存)在我的RDS实例上,直到性能/价格与P-IOPS匹配。

好。 这是一个不好的问题,因为它没有提到分配的存储空间的大小或设置的任何其他细节。 我们使用RDS,它有其优缺点。 首先,您不能在RDS中使用临时存储设备。 使用RDS服务时甚至不能直接访问存储设备。

这就是说 – RDS的存储介质被认为是基于来自亚马逊的EBS的变体。 标准IOPS的性能取决于卷的大小,并且有许多来源指出超过100GB的存储空间,他们开始“分散”EBS卷。 这提供了更好的读写平均情况下的数据访问。

我们目前运行的存储空间大约为300GB,在几个小时的时间内可以有85%的时间能够获得2k的IOP和1k ​​IOP。 我们使用datadog来logging这个,所以我们可以看到。 我们已经看到高达4K的突发写入IOP,但没有任何持续的。

我们从应用程序方面看到的主要症状是locking争用,如果写入IOPS不足。 您在应用程序日志中获得的数量和频率将为您提供标准RDS的IOPS消耗的症状。 您也可以使用像datadog这样的服务来监视IOPS。

提供IOPS的问题是,为了具有成本效益,他们假设读/写的稳定状态量。 这几乎从来不是一个现实的用例,并且是Amazon开始修复云服务的原因。 使用P-IOPS的唯一保证就是您将获得最大的吞吐能力。 如果不使用它,你仍然支付。

如果您正在运行副本,那么我们build议将只读副本作为非RDS实例运行,并将其放在常规EC2实例上。 您可以通过自己pipe理副本以更便宜的价格获得更好的读取IOPS。 我们甚至使用stunnel在AWS外部设置副本,并将SSD驱动器作为主要设备,我们的报告系统的读取速度非常可笑,比我们从RDS获得的速度快了100倍。

我希望这有助于提供一些真实世界的细节。 简言之,在我看来,除非您必须确保一定水平的吞吐量能力(或者您的应用程序将会失败),否则有更好的备选IOPS,包括读写分裂-replicas memcache等

所以,我刚刚离开了亚马逊系统工程师的电话,他有一些有关这个问题的有趣的见解。 (即这是第二手知识)。

标准EBS块可以很好地处理突发stream量,但最终会逐渐减less到100个左右。 这个工程师提出了几个备选scheme。

  1. 一些客户使用多个小EBS块并对其进行分条。 这将改善IOPS,并且成本效益最高。 您不需要担心镜像,因为EBS是在幕后镜像的。

  2. 有些客户使用EC2实例上的临时存储。 (或RDS实例),并有多个奴隶来“保证”可靠性。 临时存储是本地存储,比EBS快得多。 您甚至可以使用SSDconfiguration的EC2实例。

  3. 某些客户将configuration主服务器使用预configurationIOPS或SSD临时存储,然后使用标准EBS存储作为从服务器。 预期性能良好,但故障转移性能下降(但仍然可用)

无论如何,如果你决定使用这些策略,我会重新检查亚马逊,以确保我没有忘记任何重要的步骤。 正如我之前所说,这是第二手知识。