2017-04-19 256 views
0

我以前从未使用过AWS,并创建了一个托管在EC2实例上的php应用程序。AWS增加iops

应用程序在处理它们后将记录插入到RDS中。在免费的阶段,它以每秒10个记录的速度插入它们。

我该如何去改善这个过程发生的速度?我已经添加了100GB配置的IOPS存储,限额为1000个iops。

但是,当我运行我的应用程序时,我获得了与以前相同的速度。

关于Ec2实例和RDS实例的规格将决定它将写入数据库的速度有多快?

+0

预设IOPS对于磁盘时代是指平均值。首先使用gp2并保持100GB磁盘空间(即100 x 3 = 300 IOPS)。 – mootmoot

回答

0

提供EC2和RDS实例在同一个区域,您可以通过增加RDS规范来获得更高的性能,但通常MySQL的写入速度并不是那么快,特别是在向表中添加更多索引时。

您可以通过在查询中批量插入代码而不是单独执行它们来获得更好的性能,例如,

INSERT INTO users (name, gender) VALUES 
    ('bob', 'm'), 
    ('jane', 'f') 

如果使用某种像SQS或elasticache排队系统的写入到内存中,并在批量插入异步他们这可能是更容易。

+0

原谅我如果这是一个愚蠢的评论,除了批处理queires这是否意味着我将永远无法大幅度提高记录插入的数量说每秒100? – MattBlack

+0

不一定。 MySQL有其自身的瓶颈 - 例如,我会考虑使用Aurora RDS--但如果您提供IOP,则可以执行数千或数万个I/O插入。值得一提的是,如果没有软限制问题,DynamoDB在哪里可以达到每秒20或30k的写入速度,这也是一个更好的选择。 – Henry

0

请注意

  1. AWS免费层实例仅仅意味着随意使用。 t2.micro正在“CPU信用”突发模式下运行。一旦用完了这些CPU信用,服务器就会扼杀25%以上的CPU,因此你的性能将受到影响。

  2. 您应该投入一点时间在Cloudwatch上发送RDS IOPS信息以了解真正的问题,例如,找出它是CPU,RAM还是IO问题。

  3. AWS在相当长一段时间内引入了SSD gp2存储。因此,您应该使用AWS每GB x 3 IOPS机制,而不是直接跳入预置IOPS。 这篇文章告诉你why you should over provisioned gp2 storage than use provisioned IOPS。 gp2与突发IO也可以获得额外的价值。