MongoDB在CentOS上利用缓存的配置与优化指南
MongoDB在CentOS系统上主要通过WiredTiger存储引擎的缓存机制和操作系统级缓存来提升性能。以下是具体的配置步骤、优化技巧及注意事项:
WiredTiger是MongoDB的默认存储引擎(MongoDB 3.2+),其缓存(cache)用于存储工作集数据(如常用文档、索引),直接影响数据库的读写性能。
配置步骤:
/etc/mongod.conf);storage.engine.wiredTiger.engineConfig下添加或修改cacheSizeGB参数,设置缓存大小(单位:GB)。例如:storage:
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 4 # 设置为4GB
sudo systemctl restart mongod
注意事项:
操作系统级的缓存(如页缓存)可进一步提升MongoDB的I/O性能,需通过以下参数调整:
/etc/sysctl.conf文件,添加以下内容:vm.nr_hugepages = 0
保存后执行sudo sysctl -p使配置生效。swappiness参数:swappiness控制系统使用交换分区(Swap)的倾向,设置为0可禁用Swap(仅适用于内存充足的服务器),避免频繁的磁盘交换操作。在/etc/sysctl.conf中添加:vm.swappiness = 0
执行sudo sysctl -p生效。通过MongoDB Shell查看WiredTiger缓存的实时状态,确认配置是否正确应用:
mongo
> db.serverStatus().wiredTiger.cache
输出结果包含以下关键指标:
bytes currently in the cache:当前缓存中存储的数据量;bytes dirty in the cache:待写入磁盘的脏数据量;bytes read into cache:从磁盘读取到缓存的数据量;bytes written from cache:从缓存写入磁盘的数据量。bytes read into cache持续增长说明缓存命中率高)。mongotop(查看集合级读写耗时)、mongostat(查看操作统计)等工具监控MongoDB的内存使用情况,及时调整缓存大小。db.collection.createIndex({field: 1})),减少全表扫描,降低缓存压力。--wiredTigerCacheSizeGB参数限制其内存使用,避免影响其他服务。