-1

我正在将 MongoDB 用于拥有数百万种产品的大型电子商务业务。我们将类别和一些产品数据缓存在 mongo 中以便快速访问。

我们仍在开发中,但我们有一种行为要调查。一夜之间,我们的服务器处于空闲状态。当我们晚上离开时,一切都很快,缓存工作得很好。当我们在服务器一夜之间空闲后早上进来时,它非常慢。但过了一段时间,它又加速了。

查看内存,我看到 mongoDB 在这段时间变得更加活跃(正如我所料)。我有点假设 Mongo 在空闲时间将数据向下移动到磁盘,并在第二天早上访问时备份到内存。

如果是这种情况,那么这个问题很可能会在页面被频繁访问的生产环境中消失。

有没有人(那里的任何 mongo 大师)对我的假设有意见?我当然正在调查其他原因(数据库访问、CF 初始化等),但这对我来说似乎最有可能。

4

2 回答 2

2

Mongo 将内存管理传递给操作系统(内存映射文件机制)。所以是的,如果某个内存区域在一段时间内未被访问,系统会将更改刷新到磁盘(如果有)并释放它。

是的,当一直有活动时,这不应该在生产中发生。

于 2012-05-10T14:15:28.773 回答
2

众所周知,MongoDB 使用内存映射文件,内存处理完全取决于底层操作系统。您的操作系统很可能会从内存中删除“不太热”的页面。

于 2012-05-10T14:17:15.903 回答