mongodb 使用内存过大分析

ps aux

内存使用

复制代码
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -10

swap 使用

复制代码
for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head

mongodb 命令

复制代码
data0data0:PRIMARY> db.version();
4.2.17

data0data0:PRIMARY> db.serverStatus().storageEngine;
{
	"name" : "wiredTiger",
	"supportsCommittedReads" : true,
	"oldestRequiredTimestampForCrashRecovery" : Timestamp(1738804816, 1),
	"supportsPendingDrops" : true,
	"dropPendingIdents" : NumberLong(0),
	"supportsSnapshotReadConcern" : true,
	"readOnly" : false,
	"persistent" : true,
	"backupCursorOpen" : false
}

查看 wiredTiger 内存参数大小

单位字节

复制代码
data0data0:PRIMARY> db.serverStatus().wiredTiger.cache["maximum bytes configured"]
1073741824

可以适当调小或者调大

复制代码
data0data0:PRIMARY> db.adminCommand({setParameter: 1, "wiredTigerEngineRuntimeConfig": "cache_size=2GB" });

查看修改后的最新值

复制代码
data0data0:PRIMARY> db.serverStatus().wiredTiger.cache["maximum bytes configured"];
2147483648

记得同步修改参数文件,避免实例重启后丢失修改值。

备注:

1、默认 WiredTiger 内部缓存大小为以下两者中的较大者:

(RAM 大小 - 1 GB)的 50%,或

256 MB.

https://www.mongodb.com/zh-cn/docs/v5.0/core/wiredtiger/#memory-use

相关推荐
cui_ruicheng1 小时前
MySQL(四):数据类型与字段设计
数据库·mysql
皮皮学姐分享-ppx1 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
闪电悠米3 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
DIY源码阁4 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
浪客灿心5 小时前
项目篇:模块设计与实现
数据库·c++
流星白龙7 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
三十..7 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶7 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
努力努力再努力wz8 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
JdSnE27zv8 小时前
Qt 操作SQLite数据库
数据库·qt·sqlite