MongoDB 8 配置参数详解

系统讲解 MongoDB 8.0 核心配置参数(storage、systemLog、net、security、processManagement 等),覆盖作用、默认值、取值范围与影响,并提供可直接落地的生产配置模板。

MongoDBMongoDB参数调优性能优化文档型NoSQL2026/09/27

MongoDB 8 配置参数详解

目标:系统讲解 MongoDB 8.0 核心配置参数,覆盖每个参数的作用、默认值、取值范围与影响,并给出可直接落地的生产配置模板。所有默认值均在 MongoDB 8.0.32 真实环境实测(mongod --config 默认 /etc/mongod.conf)。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS
  • MongoDB 版本:8.0.32 MongoDB Community Server(官方 APT 仓库安装)
  • 配置文件:/etc/mongod.conf(YAML 格式)
  • 数据目录:/var/lib/mongodb
  • 日志文件:/var/log/mongodb/mongod.log
  • 参数采集方式:mongod --config 默认配置实测 + db.adminCommand({ getParameter: '*' })

二、前置条件

  • 已安装 MongoDB 8.0 并可本地连接(mongosh)
  • 了解配置文件为 YAML 格式:段落用两层缩进,禁止使用 Tab,# 为注释
  • 修改参数后需重启 mongod 生效:sudo systemctl restart mongod
  • 生产环境修改前先在测试环境验证

三、参数查看与修改方式

3.1 查看运行参数

# 查看全部可调参数(运行时生效值)
mongosh --quiet --eval 'db.adminCommand({ getParameter: "*" })'

# 查看指定参数
mongosh --quiet --eval 'db.adminCommand({ getParameter: "wiredTigerCacheSizeGB" })'

# 查看当前配置与数据库状态
mongosh --quiet --eval 'db.serverStatus().wiredTiger.cache'

💡 命令解释:getParameter 返回运行时参数;db.serverStatus() 返回内存、缓存、连接等实时指标。

3.2 修改方式对比

方式命令/操作是否即时生效是否持久化适用参数
配置文件编辑 /etc/mongod.conf + 重启需重启是所有参数
setParameterdb.adminCommand({ setParameter: 1, ... })是否(重启丢失)部分动态参数(如慢查询阈值)

💡 说明:大多数核心参数(dbPath、bindIp、cacheSizeGB 等)为静态参数,只能通过配置文件修改并重启生效。个别参数(如 slowOpThresholdMs)可运行时动态调整。


四、参数总览

本文档覆盖的全部参数汇总如下表(默认值均为 MongoDB 8.0.32 实测):

分类参数(YAML 路径)默认值(实测)配置示例说明
storagestorage.dbPath/var/lib/mongodb/opt/data/mongodb数据文件存储目录
storagestorage.journal.enabledtruetrueWiredTiger 日志(崩溃恢复),8.0 默认开启
storagestorage.wiredTiger.engineConfig.cacheSizeGB物理内存 50%1WiredTiger 缓存上限,最重要的内存参数
storagestorage.wiredTiger.engineConfig.journalCompressorsnappyzlib日志压缩算法(snappy/zlib/zstd)
systemLogsystemLog.destinationfilefile日志输出目标(file/syslog/console)
systemLogsystemLog.path/var/log/mongodb/mongod.log自定义路径日志文件路径
systemLogsystemLog.logAppendtruetrue追加写日志(false 会覆盖旧日志)
systemLogsystemLog.logLevel01日志详细级别(0~5,越大越详细)
netnet.port2701727018服务监听端口
netnet.bindIp127.0.0.10.0.0.0监听网卡(默认仅本机,远程需改)
netnet.maxIncomingConnections6553610000最大并发连接数
netnet.serviceExecutorsynchronousadaptive连接处理线程模型
processManagementprocessManagement.forkfalsetrue后台守护方式运行
processManagementprocessManagement.timeZoneInfo/usr/share/zoneinfo同左时区数据文件路径(日期/时间函数)
securitysecurity.authorizationdisabledenabled账号鉴权开关(生产必须开启)
securitysecurity.keyFile—/etc/mongo-keyfile副本集/分片集群成员间认证密钥
operationProfilingoperationProfiling.modeoffslowOp慢查询分析开关(off/slowOp/all)
operationProfilingoperationProfiling.slowOpThresholdMs100200慢查询阈值(毫秒)
replicationreplication.replSetName—rs0副本集名称(未设置则为单机)

五、核心参数详解

5.1 storage.dbPath(数据目录)

数据文件(WiredTiger 存储引擎的集合数据、索引、journal 日志)存放目录。

storage:
  dbPath: /var/lib/mongodb
项目说明
默认值/var/lib/mongodb
影响决定数据落盘位置,直接影响磁盘容量规划
建议生产环境放独立数据盘(如 /opt/data/mongodb),迁移见安装文档"配置项 3"

5.2 storage.wiredTiger.engineConfig.cacheSizeGB(WiredTiger 缓存)

WiredTiger 引擎使用内存作为读写缓存,这是 MongoDB 最重要的性能参数。

storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
项目说明
默认值物理内存的 50%(上限 256GB)
影响缓存越大读写越快,但过大会挤压操作系统页缓存与业务进程内存
建议物理内存 50% 起步;内存有限时显式调小,避免 OOM。调整后需重启生效

5.3 systemLog(日志配置)

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
参数默认值说明
destinationfilefile 写文件、syslog 写系统日志、console 输出到标准输出
logAppendtruetrue 追加写;false 每次启动覆盖旧日志
logLevel005,级别越高记录越详细;排障时临时调为 12

5.4 net.bindIp / net.port(网络监听)

net:
  port: 27017
  bindIp: 127.0.0.1
参数默认值说明
port27017服务监听 TCP 端口,客户端连接端口
bindIp127.0.0.1仅本机;远程访问改为 0.0.0.0(必须先开启鉴权)

⚠️ 安全提醒:bindIp: 0.0.0.0 + 未开启鉴权 = 数据库裸奔公网。必须先配置 security.authorization: enabled。

5.5 security.authorization(账号鉴权)

security:
  authorization: enabled
项目说明
默认值disabled(8.0 默认不鉴权,任何人可连)
影响开启后所有连接必须认证,未认证操作返回 Unauthorized
建议生产环境必须开启,并提前创建管理员账号(见安装文档"配置项 1")

5.6 operationProfiling(慢查询分析)

operationProfiling:
  mode: slowOp
  slowOpThresholdMs: 100
参数默认值说明
modeoffoff 关闭;slowOp 仅记录慢操作;all 记录所有操作(调试用,慎开)
slowOpThresholdMs100超过该毫秒数的操作记为慢操作,写入 system.profile

5.7 replication.replSetName(副本集)

replication:
  replSetName: rs0
项目说明
默认值未设置(单机模式)
影响设置后以副本集成员身份运行,需配合 security.keyFile 进行成员间认证
建议高可用环境配置 3 节点副本集;单机测试无需设置

六、生产配置模板

# /etc/mongod.conf(生产环境推荐配置)
storage:
  dbPath: /opt/data/mongodb          # 数据放独立数据盘
  journal:
    enabled: true                    # 开启 journal,崩溃恢复
  wiredTiger:
    engineConfig:
      cacheSizeGB: 4                 # 按物理内存调整(如 8G 内存设 4G)

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 0.0.0.0                    # 远程访问(务必配合下方鉴权)
  maxIncomingConnections: 10000

processManagement:
  timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: enabled             # 生产必须开启鉴权

operationProfiling:
  mode: slowOp                       # 开启慢查询分析
  slowOpThresholdMs: 100

# 副本集(高可用时启用):
# replication:
#   replSetName: rs0

💡 说明:修改后重启生效:sudo systemctl restart mongod。启用鉴权后所有连接需用 mongosh -u 用户名 -p 密码 --authenticationDatabase admin。

七、常见问题

7.1 问题 1:修改配置后 mongod 无法启动

原因: 最常见的两类:① YAML 缩进错误(用了 Tab);② dbPath 目录不存在或属主不对。

解决:

# 查看错误日志定位
tail -f /var/log/mongodb/mongod.log
# YAML 校验
python3 -c "import yaml,sys; yaml.safe_load(open('/etc/mongod.conf')); print('YAML OK')"
# 目录权限修复
sudo chown -R mongodb:mongodb /opt/data/mongodb

7.2 问题 2:开启鉴权后忘记管理员密码

解决: 临时以 --noauth 启动重置:

sudo systemctl stop mongod
sudo mongod --config /etc/mongod.conf --bind_ip 127.0.0.1 --noauth &
mongosh admin --eval 'db.updateUser("admin", { pwd: "新密码" })'
sudo mongod --shutdown
sudo systemctl start mongod

7.3 问题 3:内存占用过高被 OOM

原因: WiredTiger 缓存默认取物理内存 50%,叠加连接线程等开销。

解决: 显式调小缓存:storage.wiredTiger.engineConfig.cacheSizeGB: 2,重启生效。

八、参考链接


本文档由 www.quzuo.net 平台开发