You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看MongoDB磁盘使用量?受限环境下的技术咨询

正确的MongoDB磁盘使用量监控方法

1. 核心问题解析

你遇到的fsUsedSize删除数据后无变化的问题,本质是MongoDB存储引擎(如WiredTiger)的预分配机制导致的:MongoDB会提前申请磁盘空间,删除文档后不会立即将空闲空间释放给操作系统,因此fsUsedSize反映的是MongoDB已占用的磁盘块,而非实际存储的数据大小。

2. 两类关键监控指标

根据你的业务场景,需区分内部数据占用和操作系统层面磁盘占用两类指标:

内部数据占用(删除后立即更新)

使用db.stats()命令,重点关注以下字段:

  • dataSize:所有文档的实际字节大小,删除数据后会立即减少,能精准反映数据量变化
  • storageSize:MongoDB为数据分配的总磁盘空间(含预分配的空闲空间)
  • freeStorageSize:storageSize中未被使用的空闲空间,storageSize - freeStorageSize即为MongoDB实际占用的存储容量(内部层面)

若仅需监控时序数据的占用,可查看集合级别的统计:

db.<你的时序集合名>.stats()

同样关注dataSize、storageSize等字段,更精准定位目标数据的占用情况。

操作系统层面磁盘占用(删除后延迟更新)

如果需要监控磁盘的实际使用率(对应你3GB的限额),使用serverStatus命令获取磁盘层面的真实状态:

db.runCommand({ serverStatus: 1 }).diskSpace

该字段包含:

  • totalSize:数据目录所在磁盘的总容量(字节)
  • usedSize:磁盘已使用的容量(字节)
  • freeSize:磁盘剩余容量(字节)

注意:删除数据后usedSize不会立即下降,需等待WiredTiger后台自动回收空闲空间,或在低峰期手动执行压缩命令释放空间:

db.runCommand({ compact: '<你的时序集合名>' })

(提示:compact会锁定集合,需谨慎执行)

3. 适配你的业务逻辑

针对每5分钟检查、删除时序数据的需求,建议:

  • 优先采用dataSize或storageSize - freeStorageSize作为判断依据,删除数据后指标立即更新,能及时停止删除操作
  • 若必须基于操作系统磁盘使用率判断,需接受指标延迟性,同时定期触发压缩释放磁盘空间

内容的提问来源于stack exchange,提问作者jeongwon LEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:05:05