3

我对Mongodb和EC2了解不多。所以作为外行,我的问题是,如果 mongodb 服务器安装在 STANDARD SMALL EC2 LINUX/UBUNTU 实例上,mongodb 服务器可以处理多少 I/O(每秒 kb/mb/gb)。

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

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

提前致谢

4

3 回答 3

5

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

例如:

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

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

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

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

于 2012-07-18T05:47:54.227 回答
3

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

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

这是一个复杂的问题,因为它最终取决于您的活动数据集有多大,以及它是否明显超过与该实例关联的 1.7GB RAM。不适合内存的数据越多,MongoDB 将不得不去磁盘获取数据的次数越多,并且当数据库等待(臭名昭著的)Amazon IO 返回时,您的应用程序将更多地等待数据库向它请求数据。

此外,使用 MongoDB 的锁,如果您更容易受到较慢的 IO 的影响(即插入和更新......主要是更新),那么争用也会让您受益。

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

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

于 2012-07-18T05:42:34.430 回答
1

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

于 2012-11-25T04:10:44.757 回答