0

0

如何查看MongoDB每个分片的实际磁盘利用率_db.stats()与WiredTiger压缩比分析

P粉602998670

P粉602998670

发布时间:2026-03-18 09:16:31

|

945人浏览过

|

来源于php中文网

原创

db.stats() 的 storageSize 不反映真实磁盘占用,因不含日志、检查点等;应直连各分片执行 db.runCommand({dbStats:1,scale:1048576}),并结合 du 和 wt 工具分析。

如何查看mongodb每个分片的实际磁盘利用率_db.stats()与wiredtiger压缩比分析

如何用 db.stats() 查分片磁盘占用却不被“数据量”误导

db.stats() 返回的 dataSizestorageSize 都是逻辑视图值,不反映底层文件系统真实占用。尤其在 WiredTiger 引擎下,storageSize 已经是压缩后的大小,但仍然不含日志、检查点、缓存文件等——这些全算在磁盘里。

实操建议:

  • 必须连到每个分片的 mongos 或直连该分片的 mongod(不能只查 config server),否则看到的是聚合伪值
  • 优先看 storageSize 而非 dataSize,因为前者更接近磁盘写入量;但要注意它不含 wiredTiger/log/ 目录(默认可达几 GB)
  • 执行时加 { scale: 1024*1024 },避免单位混淆(默认字节,不换算易误判)
  • 示例:
    db.runCommand({ dbStats: 1, scale: 1048576 })
    —— 结果中 storageSize 单位是 MB

为什么 du -sh 看到的目录大小远大于 storageSize

WiredTiger 的压缩比只是影响 .wt 数据文件,而磁盘上还有三类“隐形大户”:日志文件(wiredTiger/log/)、检查点残留(WiredTiger.turtle + WiredTiger.wt)、以及未及时归档的旧日志。

常见错误现象:运维同学发现 du -sh /data/db 是 200GB,但 db.stats().storageSize 只有 80GB,以为压缩比高达 2.5x,其实差的那 120GB 里可能有 90GB 是日志。

实操建议:

  • 进分片数据目录后,分别统计:
    du -sh wiredTiger/log/
    du -sh *.wt
    du -sh journal/
    (若启用)
  • 检查 wiredTiger/log/ 下是否堆积了大量 WiredTigerLog.* 文件(默认保留最后 10 个,但大写入场景下单个可达 100MB+)
  • 确认 storage.wiredTiger.engineConfig.journalCompressor 是否为 snappy(默认),它只压缩日志内容,不减少文件数量

从 WiredTiger 层面验证实际压缩比:读 WT_SESSION::query_timestamp 没用,得看 wt dump

官方文档提的 query_timestamp 是用于一致性读,和压缩率完全无关。真实压缩比必须通过 wt 工具解析数据文件头来估算——这是最接近物理层的方式。

MidReal AI
MidReal AI

MidReal AI是一款革命性的AI小说生成工具,同时也是一个文本互动冒险游戏平台。

下载

使用场景:当需要向存储团队提供“为什么这个集合占盘这么小”的依据,或排查压缩失效(比如文本字段含大量随机 base64)。

实操建议:

  • 停写或低峰期操作,用 mongod --shutdown 后执行:
    wt -C "cache_size=1G,log=(enabled=false)" -h /data/db/ dump table:index-123-456789
  • 输出里找 file size(磁盘占用)和 data size(解压后大小),比值即为该表实际压缩比
  • 注意:不同集合压缩比差异极大——时间戳字段多的集合可能只有 1.2x,而重复 JSON 结构的集合可达 4x+
  • 不要对 collection-*.wt 直接 dump,优先选大表(如 collection-123-456789),小表误差高

分片集群下磁盘利用率不准的根源:moveChunk 过程中的双写残留

一个 chunk 迁移完成前,源分片和目标分片会同时持有该 chunk 的完整副本。迁移成功后,源分片不会立刻清理,而是等后台 dropPending 清理任务触发——这中间可能间隔数分钟到数小时,导致 dudb.stats() 都暂时虚高。

容易踩的坑:

  • 在迁移刚结束时立刻跑磁盘巡检,把临时双写当成容量瓶颈,进而误扩容
  • 依赖 sh.status() 中的 chunk distribution 判断均衡性,但它不反映磁盘级残留
  • 没查 db.adminCommand({ listDatabases: 1 }).databases 里的 empty 字段——true 表示该库已无 chunk,但目录可能还没删

真正要盯的是 db.getSiblingDB("config").collections.find({ dropped: true })db.getSiblingDB("config").chunks.countDocuments({ min: { _id: MinKey } }) 的差值。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

458

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

84

2025.09.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

448

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

606

2023.08.10

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

287

2023.07.18

mongodb启动命令
mongodb启动命令

MongoDB 是一种开源的、基于文档的 NoSQL 数据库管理系统。本专题提供mongodb启动命令的文章,希望可以帮到大家。

267

2023.08.08

抖漫入口地址合集
抖漫入口地址合集

本专题整合了抖漫入口地址相关合集,阅读专题下面的文章了解更多详细地址。

17

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号