使用MongoDB 64b 2.x的aws(m1.large)的延迟

时间:2011-12-24 08:11:20

标签: mongodb amazon-ec2 amazon-web-services

我在aws m1.large实例上部署了mongodb 64 bit 2.x版本。

我正试图找到mongo可以根据http://www.snailinaturtleneck.com/blog/tag/mongodb/(和mongodb read/write performance and mongo hosting in the cloud

给出的最佳表现。

我创建了一个带有一个集合的数据库,即用户,并使用随机数作为“user-”的后缀插入了100,000个记录/ json对象(每个json对象大小为4KB)。此外,还创建了用户ID的索引。

此外,我将db profiler设置为记录20ms或更长时间的慢速查询。我用10个线程执行了java程序。每个java类生成带有随机数的用户ID,并在无限循环中的用户集合中找到它。有了这样的负载,我已经观察到查询/读取的延迟达到了60ms。

我还观察到,当我运行较少数量的线程时说3或4(对用户集合的查询负载为每秒5K以查找用户),那么我看到没有延迟或低于2ms的延迟。

我无法理解为什么在集合中增加查找用户的负载会导致延迟。我相信mongo db可以执行更多的并发读取然后我正在尝试并且不应该对性能产生影响。

我认为有一种可能性 - 如果在单个集合上执行大型查询(例如在我们的情况下),mongo会出现性能问题,我希望在单个集合上每秒有10K到20K的查询。

我们非常感谢您的想法/建议。

1 个答案:

答案 0 :(得分:0)

缺少某些信息 - 您的磁盘配置是什么?如果所有内容都持久保存到磁盘,则EBS可能会导致延迟。

亚马逊发布了一份白皮书,其中介绍了如何在EC2上安装mongo的最佳实践:MongoDB on AWS。这是它的描述

  

本白皮书概述了适用于所有主要NoSQL系统的一般最佳实践,并重点介绍了流行的NoSQL系统之一--MongoDB - 并讨论了如何在AWS云上最好地运行它。它进一步检查了不同的MongoDB配置,以便您可以针对性能,耐用性和安全性进行优化。