如何确定我的AWS RDS数据库需要多少个IOP?


14

我正在将mysql数据库的一部分迁移到AWS中。有问题的数据是99%写入的,并且每行都有大约1k的varchar字段,一个日期时间和4个整数。

我估计在高峰时段每小时需要插入20-25k条记录。

我在当前数据库上运行了iostat -h,它报告了大约40 tps。

如何确定我需要哪种类型的IOPS?

Answers:


11

您必须对其进行测试。

您可以做一些回弹计算,以估算每个插入的I / O数量,再乘以每秒的事务数量,添加一些缓冲空间等,但是测试起来要容易得多。

最简单的方法是分配最佳猜测,然后返回并增加或减少它以符合您在现实世界中的测试。这是使用基于云的环境的奢侈品之一,硬件更改的资金成本较低,并且此类更改通常仅需要配置更新。使用EBS卷,您不仅可以增加IOPS的数量,还必须扩大卷的大小1。您始终可以只创建一个新卷并复制数据。会有一些停机时间,但是如果您的数据不是很大,那应该不会是太多,因为它会是原始副本。

这是对所需I / O数量的猜测。再次,这只是猜测,具体取决于索引的数量以及您的流量是平稳还是尖峰。以每小时25K tx的速度,您可以获得〜7 tx /秒的速度。每行的大小不是特别重要,因为它小于单个I / O(4K)的大小。每笔交易的执行速度介于1-5个IOP之间(主插入加上几个索引树插入),因此,可以说〜35 / s。

我说的是从最低100 IOPS开始,并在必要时扩大规模。


1
顺便说一句,作为后续操作:我们建立了一个300GB的数据库,这意味着至少有1000 IOPS。在RDS上运行约6个月后,由于I / O问题,我们发生了0起事件。可能会造成过大杀伤力,但会接近射击并尽可能让您忘记。
克里斯

根据您的负载-您不需要预配的IOP。除非您需要的总IOP超过2500-3500,否则标准存储容量为300GB(因为EBS条带化)。
罗斯

7

我使用了基本的iostat(iostat -h)工具来了解我当前使用了多少个iops。从中我推断出,如果我的负载量是该负载量的4倍以下,那么我将使用多少。对我来说,算下来可以达到780 IOPS,所以我可以达到800 IOPS。


iostat -h报告大约40 tps,那对应于40 iops吗?这将与@sehrope计算出的数字匹配。
克里斯

1
没错
Mark D

0

我使用iostat来确定我的应用程序正在执行的IOPS数量。iostat将其报告为tps。KB / t可帮助您确定传输量是否小于块大小256 KiB。我以一秒钟的等待时间运行iostat,即iostat -w 1。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.