MongoDB 占用内存高,主要是由它的设计和存储机制决定的,并不一定代表“内存泄漏”或异常。下面分点说明原因,并给出可优化建议。
MongoDB 默认使用 WiredTiger 存储引擎,它会:
例如:
✅ 这是正常行为,不是 bug
除了 WiredTiger 自己用的内存:
所以你用 top / free 看时:
每个连接都会占用:
连接数上千时,内存会明显上涨。
sort() 无索引会临时申请大量内存。
MongoDB 不会频繁释放内存,即使负载下降:
db.serverStatus().wiredTiger.cache
关注:
bytes currently in the cachemaximum bytes configureddb.serverStatus().mem
修改配置文件 mongod.conf:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 4
重启 MongoDB 生效。
explain() 检查慢查询db.collection.getIndexes()
net:
maxIncomingConnections: 1000
sort / filter 建索引Docker / K8s 中:
cacheSizeGBMongoDB 内存高,是因为它“能缓存就缓存”,这是性能设计,不是故障。
如果你愿意,可以告诉我:
db.serverStatus().mem 输出我可以帮你算一个合理的内存上限配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。