MongoDB限制内存

Vla*_*anu 20 ubuntu performance debian mongodb

我使用mongo存储日志文件.mongoDB和mysql都在同一台机器上运行,虚拟化mongo env不是一个选项.因为日志表变得非常快,我恐怕很快就会遇到性能问题.有没有办法限制mongo的常驻内存,以便它不会占用所有可用内存并过度减慢mysql服务器?

数据库机:Debian'lenny'5

其他解决方案(请评论):

  • 由于我们需要所有历史数据,我们不能使用上限集合,但我也在考虑使用转储和删除旧数据的cron脚本

  • 我应该考虑使用其他论坛上建议的较小的密钥吗?

Gat*_* VP 14

嘿弗拉德,你有几个关于日志的简单策略.

首先要知道的是,Mongo通常可以处理大量连续插入而无需大量RAM.原因很简单,你只需插入或更新最近的东西.因此索引大小增加,但数据将不断被分页.

换句话说,您可以将RAM使用分为两个主要部分:索引和数据.

如果您正在运行典型的日志记录,则数据部分会不断被清除,因此只有索引才真正保留在RAM中.

要知道的第二件事是,您可以通过将日志放入较小的存储桶来缓解索引问题.这样想吧.如果将所有日志收集到带有日期戳的集合(调用它logs20101206)中,则还可以控制RAM中索引的大小.

当您滚动几天时,旧索引将从RAM中刷新,并且不会再次访问它,因此它将会消失.

但我也在考虑使用转储和删除旧数据的cron脚本

这种按天记录的方法也有助于删除旧数据.在您完成数据的三个月内,您只需执行db.logs20101206.drop()此操作即可立即消失.请注意,您不会回收磁盘空间(它都是预先分配的),但新数据将填满空白点.

我应该考虑使用其他论坛上建议的较小的密钥吗?

是.

实际上,我将它内置到我的数据对象中.所以我使用logs.action或访问数据logs->action,但在下面,数据实际上已保存到logs.a.在"领域"上花费更多的空间比在"价值"上花费更多的空间,所以值得缩小"领域"并试图将其抽象出去.