我已经看到建议“预热”EC2以克服第一次写入惩罚: -
预热数据分区 - 有一个 在EC2中使用磁盘IO的缺点:a “第一次写”性能何时达到 最初写入新分区。 为了避免这种惩罚,你可以“温暖 通过执行排序来“分区” 访问的丢弃命令 它。例如,您可以使用Linux dd命令写入磁盘。而 罚款仍然发生,不可能 避免,至少第一次写 你的数据库不会受到影响 的效果。
来源:http://answers.oreilly.com/topic/1345-getting-the-most-out-of-mysql-in-the-amazon-cloud/
...但我还没有找到有关最佳做法的进一步建议! EBS存储是真的吗?任何人都可以推荐执行此预热的'dd'语法,以及如何确保所有块都“加热”?
答案 0 :(得分:14)
感谢指向AWS论坛的指针。我在帖子发布后发布了这个问题,并收到了Jason @ AWS的回复。线程在这里: -
http://developer.amazonwebservices.com/connect/message.jspa?messageID=198413#198413
......他的回答是: -
有一个首读惩罚 从快照创建的EBS卷,如 该卷之前可用 所有的街区都是 成功加载。你可以否定 通过强制每个块来惩罚这个惩罚 要读的音量:
$ dd if=/dev/<device> of=/dev/null
答案 1 :(得分:4)
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-prewarm.html表示可以通过读取整个磁盘来预热快照卷;这加快了读取速度。快照和非快照卷可以通过写入整个磁盘来预热写入。
创建新EBS卷或从快照还原卷时,会立即为您分配后端存储块。但是,第一次访问存储块时,必须先将其擦除(对于新卷)或从其快照(对于已还原的卷)进行实例化,然后才能访问该块。此初步操作需要一些时间,并且每次访问每个块时都会导致卷的IOPS损失5到50%。