用于运行 MongoDB 的 Amazon AWS 实例?

ima*_*ive -1 amazon-ec2 amazon-web-services mongodb

在 AWS 中运行 MongoDB 的最优化方法是什么?我得到了一些缓慢的磁盘 i/o 基准测试(我理解这是 EC2 上的标准)。大型 ec2 实例是我最好的选择吗?有没有办法获得更好的磁盘读取?

cyb*_*x86 7

如果整个数据库可以容纳在内存中,MongoDB 的性能最好 - 因此可能需要考虑高内存实例,特别是如果您的应用程序读取繁重(良好的索引也会有所帮助)。

MongoDB 使用内存映射文件 - 因此它在内存中存储的内容和写入磁盘的内容方面相当高效。索引具有优先级,并且应始终位于内存中(如果索引不适合内存,则性能影响很大)。

作为一般准则,您应该尽量减少写入密集型应用程序的索引(因为每次写入都需要对索引进行额外写入)。读取密集型应用程序应该在任何经常访问的字段上使用索引。

其次,各种实例类具有不同的“I/O 性能”——大型实例类具有“高”的 I/O 性能。

最后,您可以通过将 EBS 卷设置为 RAID 来提高它们的读/写性能。使用mdadm.

您可以使用iostat(查看磁盘上发生了多少读/写)来检查磁盘访问。从 MongoDB 方面来看,db.serverStatus()在 mongo shell 中使用,以获取相关数据(例如,该mem部分描述了内存使用情况,而backgroundFlushing描述了写入磁盘。

对于与查询它的应用程序驻留在同一台机器上的小型读取密集型数据库,适合它在内存中的所有实例大小(可能除了 t1.micro 之外)应该本质上是等效的(因为所需的 I/O 是最小的)。对于大量写入的应用程序,I/O 成为更重要的考虑因素。