AWS RDS预配置IOPS真的值得吗?

时间:2013-09-13 01:57:29

标签: performance amazon-web-services amazon-rds

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

在东京地区,标准部署的P-IOPS率为0.15美元/ GB,0.12美元/ IOP。 (Double the price for Multi-AZ deployment...

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

对于我的情况,使用P-IOPS比使用标准I / O速率高出约100倍。

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

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

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

SELF ANSWER

除了zeroSkillz所写的答案之外,我还做了一些研究。但请注意,我不是阅读数据库基准的专家。此外,基准和答案基于EBS。

根据“罗德里戈·坎波斯”撰写的an article,表现确实显着提升。

从1000 IOPS到2000 IOPS,读/写(包括随机读/写)性能翻倍。从zeroSkillz所说的,标准EBS块提供了大约100 IOPS。想象一下,当100 IOPS达到1000 IOPS(这是P-IOPS部署的最低IOPS)时,性能会有所提高。

结论

根据基准,性能/价格似乎合理。对于性能危急情况,我猜有些人或公司应该选择P-IOPS,即使他们的收费超过100倍。

但是,如果我是中小型企业的财务顾问,我会逐渐扩展(如CPU,内存)我的RDS实例,直到性能/价格与P-IOPS相匹配。

2 个答案:

答案 0 :(得分:29)

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

标准EBS块可以很好地处理突发流量,但最终它将逐渐减少到大约100个iops。这位工程师提出了几种替代方案。

  1. 一些客户使用多个小型EBS块并对其进行条带化处理。这将提高IOPS,并且是最具成本效益的。您无需担心镜像,因为EBS在幕后进行镜像。

  2. 一些客户使用EC2实例上的临时存储。 (或RDS实例),并有多个奴隶来“确保”durabilty。短暂存储是本地存储,比EBS快得多。您甚至可以使用SSD配置的EC2实例。

  3. 有些客户会将主设备配置为使用预配置IOPS或SSD临时存储,然后为从设备使用标准EBS存储。预期性能良好,但故障转移性能降低(但仍然可用)

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

答案 1 :(得分:27)

确定。这是一个糟糕的问题,因为它没有提到分配的存储空间的大小或设置的任何其他细节。我们使用RDS,它有其优点和缺点。首先,您不能使用带有RDS的短暂存储设备。使用RDS服务时,您甚至无法直接访问存储设备。

话虽如此 - 推测RDS的存储介质是基于亚马逊的EBS变体。标准IOPS的性能取决于卷的大小,并且有许多来源表明超过100GB的存储空间它们开始"条带" EBS卷。这样可以在读写时提供更好的平均案例数据访问。

我们目前运行大约300GB的存储分配,并且在几个小时的时间段内可以在大约85%的时间内获得2k写入IOP和1k ​​IOP。我们使用datadog来记录这个,所以我们实际上可以看到。我们已经看到多达4k的IOP写入突发,但没有像这样的持续。

如果用于写入的IOPS不够,我们从应用程序端看到的主要症状是锁争用。您在应用程序日志中获得这些数据和频率将为您提供耗尽标准RDS的IOPS的症状。您还可以使用datadog之类的服务来监控IOPS。

配置IOPS的问题是它们假设写入/读取的状态量稳定,以便具有成本效益。这几乎不是一个现实的用例,也是亚马逊启动云服务修复的原因。您获得P-IOPS的唯一保证是您将获得保留的最大吞吐量功能。如果不使用它,你仍然需要付费。

如果您对运行副本感到满意,我们建议您将只读副本作为NON-RDS实例运行,并将其置于常规EC2实例上。通过自己管理副本,您可以以更便宜的价格获得更好的读取IOPS。我们甚至使用stunnel在AWS外部设置复制品,并将SSD驱动器作为主要块设备,我们的报告系统读取速度非常快 - 比我们从RDS获得的速度快100倍。

我希望这有助于提供一些真实世界的细节。简而言之,在我看来 - 除非你必须在一个恒定的基础上(或在任何给定的点)确保一定程度的吞吐量能力(或你的应用程序将失败),否则有更好的替代方案来配置IOPS,包括read-write splitting with read -replicas memcache等。