2017-04-19 251 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也可以獲得額外的價值。