小编Spi*_*Xel的帖子

MongoDB 使用过多内存

我们已经使用 MongoDB 几个星期了,我们看到的总体趋势是 mongodb 使用太多内存(远远超过其数据集 + 索引的整个大小)。

我已经通读了这个问题这个问题,但似乎没有一个能解决我一直面临的问题,他们实际上是在解释文档中已经解释过的内容。

以下是htopshow dbs命令的结果。

在此处输入图片说明

显示数据库

我知道 mongodb 使用内存映射 IO,所以基本上操作系统处理内存中的缓存内容,当另一个进程请求空闲内存时,mongodb理论上应该释放其缓存的内存,但从我们所见,它没有。

OOM 开始杀死其他重要进程,例如 postgres、redis 等。(可以看出,为了克服这个问题,我们将 RAM 增加到 183GB,现在可以工作但非常昂贵。mongo 使用了 ~87GB 的 ram,几乎是整个数据集大小的 4 倍)

所以,

  1. 这么多内存使用真的是预期的和正常的吗?(根据文档,WiredTiger 最多使用约 60% 的 RAM 作为其缓存,但考虑到数据集大小,它甚至有足够的数据来占用 86GB 的 RAM 吗?)
  2. 即使内存使用是预期的,为什么 mongo 不会释放其分配的内存,以防另一个进程开始请求更多内存?在我们增加 RAM 之前,Linux oom 不断杀死各种其他正在运行的进程,包括 mongodb 本身,这使系统完全不稳定。

谢谢 !

mongodb memory wiredtiger

41
推荐指数
3
解决办法
7万
查看次数

标签 统计

memory ×1

mongodb ×1

wiredtiger ×1