Mongodb mongo db服务器的内存使用问题

Mongodb mongo db服务器的内存使用问题,mongodb,webfaction,Mongodb,Webfaction,我有一个mongod进程运行在一个带有512MB RAM的webfaction服务器上。我有一个MongoDB数据库,有两个大小分别为10MB和2GB的集合。每当我通过MongoShell对我的集合运行查询时,RAM的使用率就会异常高,托管提供商会自动终止服务器 有没有办法控制mongod服务器的内存使用?我做错了什么? PS:请指导我,因为我是MongoDB的新手,正在进行一点实验。这是一个有问题的设置,从代码方面来说,你也无能为力。问题是,您的应用程序会被终止,因为它需要RAM。MongoD

我有一个mongod进程运行在一个带有512MB RAM的webfaction服务器上。我有一个MongoDB数据库,有两个大小分别为10MB和2GB的集合。每当我通过MongoShell对我的集合运行查询时,RAM的使用率就会异常高,托管提供商会自动终止服务器

有没有办法控制mongod服务器的内存使用?我做错了什么?
PS:请指导我,因为我是MongoDB的新手,正在进行一点实验。

这是一个有问题的设置,从代码方面来说,你也无能为力。问题是,您的应用程序会被终止,因为它需要RAM。MongoDB对RAM非常贪婪,并且会尽可能地获取它所能。通过小心地避免较大的结果集和大量数据,您可能会稍微延迟这个问题,但是如果不可能的话,为什么首先要使用web级数据库呢

使用提供给您固定数量RAM的提供程序,以便MongoDB知道它可以分配多少RAM。这可能不会很快,但至少它不会让这项服务无中生有

即使您有非常好的索引,至少索引应该适合RAM。如果操作系统需要100MB(这是非常保守的),那么10GB数据存储只剩下400MB。实际上,RAM中的实际数据存储可能只剩下200MB,对于10GB数据库来说,这似乎是低端


即使如此,也不要针对不必要的强大限制编写软件。具有1-2GB RAM的虚拟机并不昂贵,但更重要的是,确保RAM得到保证和修复(无“boost”RAM)。

另一种避免mongodb因内存而崩溃的方法是向操作系统添加交换,但当db较大时,这会降低性能


我遵循了中的步骤,此后我的mongodb实例从未崩溃。我在512MB AWS实例上运行带有1.5GB集合和多个512MB集合的mongodb。

您的查询是什么,您可能需要添加一些索引。Mongo必须将整个集合拉入RAM中进行搜索。提供数据模式和查询类型将非常有帮助。此外,如前所述,索引是存在的。数据基本上包含facebook个人资料和用户的喜好。我正在对数据进行搜索查询和聚合查询。此外,我没有使用任何索引。听起来你可能已经回答了你自己的问题:)。如果没有添加任何二级索引,则除了
\u id
查询之外的任何内容都必须扫描整个集合。应该是你的出发点。如果您不确定要添加什么索引,您可能需要发布一个单独的问题,其中包含示例文档和通常需要执行的查询/更新类型。明白了,有没有办法限制mongo使用指定数量的RAM?不太好,请看这是悲哀的。嗯,我想我可以在WebPosition上做有限的测试,我需要一个好的配置服务器