2012-07-18 162 views
2

我对Mongodb和EC2了解不多。所以作为外行人员,我的问题是如果mongodb服务器安装在STANDARD SMALL EC2 LINUX/UBUNTU实例上,那么mongodb服务器可以处理多少I/O(以kb/mb/gb /秒为单位),而不会窒息。Mongodb on Amazon EC2

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

注:MongoDB的和EC2实例安装在默认模式。

预先感谢

回答

3

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

更长,更散漫的答案...

这是一个复杂的问题,因为它最终取决于你的活动数据集有多大,如果它比与该实例相关的RAM 1.7GB显著更多。无法放入内存的数据越多,MongoDB就越需要去磁盘才能获取数据,而且数据库等待数据库(臭名昭着的Amazon IO)返回时,您的应用程序需要等待更多的数据向它请求数据。

而且,与MongoDB的锁,如果你是更容易受到较慢的IO(即插入和更新......主要是更新),然后争可以得到你。另外,如果您不想担心这些问题并且能够有效扩展,您可以使用MongoDB托管服务之一(如MongoHQ ...免责声明,我是创始人),因为他们允许随着您的成长,您可以有效扩展,并让您可以更轻松地在不同级别测试IO。

所以,内存和I/O性能是选择一个实例时要考虑的重要事情。

5

没有确定什么,你可以在服务器上运行一个特定的公式,因为这将根据您的服务器配置和你的应用程序(和服务器)实际上做的时候有很大不同。还会有平均负荷相对于高峰负荷..这可能会更高。

例如:

  • ,如果你的工作数据集比可用RAM大的服务器,如果你在同一个运行Web服务器可能会花费大量的时间洗牌从磁盘文件到内存
  • 实例作为数据库服务器..两人将可用的资源竞争
  • 如果你正在做大量的数据更新,你的服务器将使用更多的资源比相同数量的读取
  • ,如果你没有适当的索引检索,你的数据库服务器会使用更多资源

对于MongoDB,有用的出发点是Optimization上的文档。

您应该建立资源监测一些主动服务(如:Munin)了解一段时间内的应用程序的使用模式。

制定出为你的应用程序可以处理,你也可以尝试用load test的许多基准测试工具之一瞎猜。关键是制定出准确的测试配置文件,并确定潜在的性能热点/弱点来解决。