配置前需先了解系统内存情况,使用free -m命令查看总内存、已用内存及剩余可用内存,为后续配置提供依据。
MongoDB默认使用WiredTiger存储引擎(MongoDB 3.2+版本),其缓存大小是影响内存使用的关键参数。通过storage.wiredTiger.engineConfig.cacheSizeGB参数设置缓存大小,推荐值为服务器物理内存的50%-70%(需预留足够内存给操作系统及其他应用)。
/etc/mongod.conf文件,添加或修改以下内容:storage:
wiredTiger:
engineConfig:
cacheSizeGB: 4 # 示例:设置为4GB(根据实际内存调整)
--wiredTigerCacheSizeGB参数指定(仅对当前启动有效):mongod --wiredTigerCacheSizeGB 4
为避免内存过度分配或交换空间影响性能,需调整以下系统参数:
/proc/sys/vm/overcommit_memory文件,设置为1(允许内存超额分配,但需谨慎使用);如需永久生效,将vm.overcommit_memory = 1添加至/etc/sysctl.conf文件。/proc/sys/vm/swappiness文件,设置为10(值越小,系统越倾向于使用物理内存而非交换空间);永久生效需添加vm.swappiness = 10至/etc/sysctl.conf文件。/etc/security/limits.conf文件设置MongoDB进程的内存限制(如mongod hard as unlimited),避免进程被系统强制终止。setParameter.memoryLimitGB参数设置MongoDB进程的最大内存使用量(包括缓存、日志及内部数据结构),需确保不超过系统可用内存。setParameter.internalQueryExecMaxMemoryUsageMB参数限制内部查询的内存使用量(如排序、聚合操作),避免单个查询占用过多内存。配置完成后,需通过以下工具监控内存使用情况,根据实际负载调整参数:
top、htop或vmstat命令监控系统整体内存使用情况。sudo systemctl restart mongod)。