Amazon EC2上的Mongodb

时间:2012-07-18 03:46:23

标签: mongodb amazon-ec2

我对Mongodb和EC2了解不多。所以作为一个门外汉,我的问题是,如果在STANDARD SMALL EC2 LINUX / UBUNTU实例上安装了mongodb服务器,那么mongodb服务器可以处理多少I / O(以kb / mb / gb /秒为单位),mongodb服务器可以处理而不会出现阻塞。

是否有任何公式或软件或网站可以告诉服务器的最大强度或输出?

注意:Mongodb和EC2实例以默认模式安装。

提前致谢

3 个答案:

答案 0 :(得分:5)

没有特定的公式可以确定您可以在服务器上运行什么,因为这将根据您的服务器配置以及您的应用程序(和服务器)当时实际执行的操作而有很大差异。平均负载与峰值负载相比也可能相当高。

例如:

  • 如果您的工作数据集大于可用RAM,则服务器可能会花费大量时间将文件从磁盘转移到内存
  • 如果您在与数据库服务器相同的实例中运行Web服务器..这两者将争夺可用资源
  • 如果您正在进行大量数据更新,那么您的服务器将使用比读取次数相同的更多资源
  • 如果您在没有正确索引的情况下进行搜索,则数据库服务器将使用更多资源

对于MongoDB,一个有用的起点是Optimization上的文档。

您应该为资源监控设置一些主动服务(例如Munin),以了解您的应用程序的使用模式。

要对应用程序可以处理的内容进行估计,您还可以尝试load test使用众多基准测试工具之一。关键在于制定准确的测试配置文件,并确定潜在的性能热点/弱点,以便解决。

答案 1 :(得分:3)

TL / DR:在我们的测试中,使用EBS的M1.Large可以处理(平均)每秒约250次非顺序I / O操作。在测试测试中,这通常不会超过每秒20-30MB。这是AWS“高”IO设置的一部分。对于Smalls,它们属于“中等”IO,所以为了安全起见,它将是该输出的1/2到2/3 ......尽管在完全公开中,我们还没有对较小的实例进行任何测试。 / p>

更长,更漫无边际的答案......

这是一个复杂的问题,因为它最终取决于您的活动数据集的大小,以及它是否远远超过与该实例关联的1.7GB RAM。不适合内存的数据越多,MongoDB必须转到磁盘才能获取数据,并且当数据库等待(臭名昭着)Amazon IO返回时,您的应用程序将在数据库上等待的次数越多要求提供数据。

另外,使用MongoDB的锁定,如果你更容易受到较慢的IO(即插入和更新......主要是更新)的影响,那么争用也可以帮到你。

此外,如果您不想担心这些问题并且能够有效扩展,您可以使用MongoDB托管服务之一(例如MongoHQ ...免责声明,我是创始人),因为他们允许您随着您的成长有效扩展,并允许您更轻松地在不同级别测试IO。

因此,在选择实例时,RAM和I / O性能是需要考虑的重要事项。

答案 2 :(得分:1)

此AWS白皮书可能有所帮助: http://media.amazonwebservices.com/AWS_NoSQL_MongoDB.pdf