MongoDB自带的serverStatus命令是监控内存使用的基础工具,可返回内存使用的详细指标。通过以下步骤操作:
mongo --host localhost:27017(默认端口27017)。db.serverStatus().mem。resident:MongoDB进程占用的物理内存(Resident Memory),反映实际使用的RAM量;virtual:虚拟内存(Virtual Memory),包括映射文件和分配但未使用的内存;mapped:映射内存(Mapped Memory),即MongoDB映射到内存中的数据文件大小(如WiredTiger存储引擎的缓存数据)。通过Debian系统的原生工具,可监控MongoDB进程对系统内存的整体占用:
top -p $(pgrep mongod)(pgrep mongod获取MongoDB进程ID),实时查看RES(物理内存占用)和%MEM(内存占用百分比)列;free -m,查看系统总内存、已用内存、空闲内存及缓存/缓冲区的使用情况,判断系统内存是否充足;apt install sysstat安装,执行sar -r 1 5(每秒刷新1次,共5次),查看内存使用的历史趋势和统计信息。vsize:虚拟内存;res:物理内存)。安装:sudo apt update && sudo apt install mongostat;使用:mongostat --host localhost:27017(默认每秒刷新)。sudo apt install mongotop;使用:mongotop --host localhost:27017(默认每秒刷新)。若需要历史数据存储、可视化及告警,推荐以下第三方工具:
mongodb_exporter(MongoDB官方导出器)收集内存指标;resident、virtual等内存指标的趋势图;resident内存超过系统内存的80%时触发告警)。resident(物理内存)和virtual(虚拟内存)综合判断:resident过高可能导致系统内存不足,virtual过高可能表示内存映射文件过多;/etc/mongod.conf中的storage.wiredTiger.engineConfig.cacheSizeGB参数(如设置为系统内存的60%),合理分配内存缓存,避免内存过度占用。