我有一个在 Windows 中运行的独立 MongoDB 实例。它最近运行缓慢,我的故障排除发现了以下症状。
- 这种缓慢通常发生在对大量集合进行全文搜索查询之后。我猜这是因为它将集合中的许多页面从磁盘交换到内存中,因此来自其他集合的数据被挤出内存。
- 服务器内存使用率上限约为 55%。服务器 (Win2012) 有 32GB 内存,但 MongoDB 不会尝试使用超过 16GB 的内存。
我已经看到一些关于限制 MongoDB 内存使用的问答,但没有看到关于如何鼓励 MongoDB 更加贪婪的问答。
任何人都会有类似问题的经验吗?
- MongoDB:3.2.0
- 存储引擎:wiredTiger
- 操作系统:Win2012
- 内存:32GB
谢谢
想通了为什么,这里是解释。
wiredTiger 的默认缓存大小限制为 60%RAM - 1GB,应该在具有大内存的系统中被覆盖。
请检查您的索引大小必须适合 RAM,并且对于 WiredTiger,MongoDB 同时使用 WiredTiger 缓存和文件系统缓存。
对于 RAM 高达 10 GB 的系统,新的默认设置小于或等于 3.0 默认设置(对于 MongoDB 3.0,WiredTiger 缓存使用 1 GB 或已安装物理 RAM 的一半,以较大者为准)。
对于 RAM 超过 10 GB 的系统,新的默认设置大于 3.0 设置。
通过文件系统缓存,MongoDB 自动使用 WiredTiger 缓存未使用的所有空闲内存
https://docs.mongodb.com/manual/core/wiredtiger/