centos

centos mongodb内存管理

小樊
50
2025-09-30 13:26:14
栏目: 云计算

CentOS下MongoDB内存管理指南

一、核心内存配置:WiredTiger缓存设置

MongoDB(版本≥3.2默认使用WiredTiger存储引擎)的内存管理核心是WiredTiger缓存storage.wiredTiger.engineConfig.cacheSizeGB),用于缓存数据和索引,直接影响查询性能。

二、操作系统级内存优化

1. 关闭Transparent HugePages(THP)

THP会导致内存碎片化,影响MongoDB性能。需在/etc/sysctl.conf中添加:

vm.nr_hugepages = 0

并执行sudo sysctl -p使配置生效。

2. 调整Swappiness参数

vm.swappiness控制操作系统使用交换空间(Swap)的倾向,建议设置为10或更低(值越低,越少使用Swap):

sudo sysctl vm.swappiness=10
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

3. 增加文件描述符限制

MongoDB需要大量文件描述符处理并发连接,编辑/etc/security/limits.conf,添加:

mongod soft nofile 65536
mongod hard nofile 65536

三、内存使用监控与验证

1. 查看WiredTiger缓存状态

通过MongoDB Shell执行以下命令,查看缓存命中率、脏数据比例等关键指标:

db.serverStatus().wiredTiger.cache

重点关注:

2. 查看整体内存使用

使用Shell命令查看MongoDB进程的内存占用:

db.serverStatus().mem

输出包括:resident(常驻内存)、virtual(虚拟内存)、mapped(映射内存)等。

3. 系统层面监控

使用tophtopvmstat命令监控系统内存使用情况,确保操作系统及其他应用有足够内存。

四、其他优化建议

1. 定期重启服务

长期运行的MongoDB可能积累内存碎片,建议每周或每月重启一次(通过cron任务自动化):

0 3 * * 0 systemctl restart mongod

2. 使用SSD存储

SSD的高I/O性能可减少MongoDB对内存的依赖(如减少磁盘读取次数),提升整体性能。

3. 查询优化

0
看了该问题的人还看了