这个MongoDB / EC2设置有多好?

嗨,
我想知道什么是AWS / MongoDB在机器和磁盘大小方面的一个很好的设置。

当前设置

  • configuration服务器的3个微型机器,1个mongos和仲裁器。 8Gb的限制差不多已经达到了。 (我用–nojournal跑仲裁员)
  • 每个碎片:一个2台机器m1.large的复制品集,8Gb用于系统+ 20Gb用于数据
  • 一切都在EBS上。

问题

  1. 是20Gb太大还是太小? 我应该以100Gb为例吗?
  2. 我应该通知mongodb关于20Gb(或其他)的磁盘限制吗?
  3. 你看到有什么不对吗? Im新的mongodb和aws,但我是一个好经验的SWE

使用计划

我的数据库应该允许100ps(大部分是写入),并且在接下来的3年里应该增长到1Tb。 当我们看到数据库需要更多的内存时,计划是根据需要添加尽可能多的分片,或多或less地手动(使用脚本)。

我们还将运行一些mapreduce,并有一些脚本在过去15分钟内每15分钟汇总一次数据。

我们是一个非常小的公司,在我们的服务器上花费高达几百美元就可以,但是我们不能为现金而疯狂。

我们希望我们不必手动处理太多的机器故障,每月手动处理一次就好了。

谢谢你告诉我你的想法。

托马斯

首先你的具体问题:

是20Gb太大还是太小? 我应该以100Gb为例吗?

这完全取决于您的数据要求以及您打算插入多less个文档。 如果你打算拥有5GB的文档,那么你应该没问题,即使有复制的开销(oplog是5%的可用空间)和存储(总是为每个数据库预先分配一个空文件)。 如果您打算拥有10-12GB的数据(并且记住您还必须存储索引,日志,日志),那么我会select一个更大的磁盘。

既然你说你计划在一年内增长到1TB,那么你在一个月内可能会超过20GB,并且无论如何都需要增加磁盘,因此它可能会更容易立刻达到100GB。 一年1TB,假设不断增长,那只会给你1个月左右的空间(每年1TB〜每月83GB)。

我应该通知mongodb关于20Gb(或其他)的磁盘限制吗?

不,在处理这种情况方面有了改进 ,但是MongoDB目前只是使用所有可用的空间,直到没有剩下的空间 – 您需要独立监控您的磁盘空间。

你看到有什么不对吗? Im新的mongodb和aws,但我是一个好经验的SWE

不要在生产中使用微型实例 – 特别是不要将它们用于configuration服务器。 您的configuration服务器对分片群集的操作至关重要。 但是,没有必要把我的话 – 看到更新的亚马逊白皮书的第6页:

不build议将T1.micro实例用于生产MongoDB部署,包括arbiters,config服务器和mongos分片pipe理器。

一般来说,我会推荐阅读白皮书,并遵循其中的指导方针 – 您会发现有关Linux设置(readahead,hugepages等),存储,pIOPS等的build议。 另外值得一提的是生产笔记 – 有些重复,但是比白皮书更新更频繁。

最后,了解一下你的数据库的工作集大小 (每个分片) – 这将决定你需要多lessRAM,这对于selectMongoDB EC2上的实例大小是非常关键的。 你可能有足够的8GB,但如果没有,你会看到显着的性能命中点击磁盘。