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

MongoDB 3.6副本集extsort-doc-group文件激增致服务挂起问题咨询

根本原因
  • MongoDB 3.6版本存在已知的外部排序临时文件泄露Bug(对应内部编号SERVER-34298):当携带$group/$sort阶段的聚合查询异常终止(如客户端主动断开、查询超时)时,服务端无法自动清理生成的extsort-doc-group前缀临时文件,会导致文件持续残留、占用磁盘空间,并发异常查询场景下会出现文件大小快速增长的情况。
  • 聚合查询未命中索引时,中间结果集超过默认100MB的内存排序阈值,若开启了allowDiskUse: true会触发磁盘外部排序,大量同类慢查询并发时会同时生成多个临时文件,快速耗尽磁盘IO和存储空间,最终导致服务器阻塞挂起。
  • 默认配置下临时文件与核心数据文件存放在同一块磁盘,临时文件占用的IO和磁盘空间会直接影响正常业务读写,放大故障影响范围。
解决方案

紧急缓解方案

  • 确认对应异常查询已经终止后,手动删除dbPath/tmp目录下所有extsort-doc-group.*前缀的临时文件,快速释放磁盘空间。
  • 临时关闭业务查询默认的allowDiskUse配置,仅对必要的离线大查询单独开启该参数,避免非必要的磁盘排序产生临时文件。

长期修复方案

  • 升级MongoDB服务到3.6.13及以上的稳定版本,或直接升级到4.0+长期支持版本,彻底修复临时文件无法自动清理的已知Bug。
  • 优化所有带$group/$sort阶段的聚合查询,为查询字段添加匹配的索引,避免全表扫描产生过大的中间结果集,尽量让排序操作在内存内完成,从源头减少外部排序的触发概率。
  • 调整存储配置:将dbPath/tmp目录单独挂载到独立的大容量、高性能磁盘,避免临时文件占用数据盘资源影响核心业务。
  • 按需调整参数:根据服务器可用内存大小,适当调大internalQueryExecMaxBlockingSortBytes参数值,提升内存排序的上限,注意建议最大值不超过可用内存的10%,避免占用过多业务运行内存。
  • 业务侧增加查询管控逻辑:限制大查询并发量,为所有查询添加合理的超时终止规则,避免无效慢查询长期占用服务端资源生成临时文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:00:04