首页主机资讯CentOS MongoDB故障排查怎么配置

CentOS MongoDB故障排查怎么配置

时间2026-01-19 12:00:03发布访客分类主机资讯浏览1169
导读:CentOS 上 MongoDB 故障排查的配置与步骤 一 快速定位流程 检查服务状态与端口 执行:systemctl status mongod、ss -lntp | grep 27017,确认进程存活与监听端口。 查看错误日志...

CentOS 上 MongoDB 故障排查的配置与步骤

一 快速定位流程

  • 检查服务状态与端口
    • 执行:systemctl status mongodss -lntp | grep 27017,确认进程存活与监听端口。
  • 查看错误日志
    • 执行:tail -n50 /var/log/mongodb/mongod.log,优先关注包含 ERROR/FATAL 的行及最近一次启动的堆栈信息。
  • 校验配置文件关键项
    • 文件:/etc/mongod.conf,重点核对 storage.dbPathsystemLog.pathnet.bindIpprocessManagement.forkpidFilePath 等是否与运行环境一致。
  • 资源与连通性
    • 执行:free -mdf -htop,排除 内存/磁盘/CPU 瓶颈;必要时临时调高日志级别获取更多线索。
  • 重启并复测
    • 执行:systemctl restart mongod & & systemctl status mongod,确认状态为 active (running) 且端口可达。

二 关键配置项用于排查

  • 建议的 /etc/mongod.conf 最小排查模板
    • 存储与日志
      • storage.dbPath: /var/lib/mongo
      • systemLog.destination: file
      • systemLog.path: /var/log/mongodb/mongod.log
      • systemLog.logAppend: true
    • 网络与访问控制
      • net.bindIp: 127.0.0.1,< 管理网IP> (故障排查阶段可先仅绑定本地,确认后再放开)
      • net.port: 27017
    • 进程与权限
      • processManagement.fork: false(前台运行便于直接看到启动报错)
      • processManagement.pidFilePath: /var/run/mongodb/mongod.pid
    • 安全(可选,排查阶段可先关闭以排除干扰)
      • security.authorization: disabled
  • 日志级别与组件
    • 全局:systemLog.verbosity: 1~2(默认 0,排查时临时提升;生产谨慎)
    • 组件:可按需提高特定组件日志,如 systemLog.component.query.verbosity: 1
  • 慢查询与性能
    • 配置:operationProfiling.mode: slowOpoperationProfiling.slowOpThresholdMs: 100
    • 或会话中:db.setProfilingLevel(1, 100)
  • 说明
    • 路径、是否前台运行、PID 文件路径在不同安装包/版本可能不同,请以本机配置文件与进程实际参数为准。

三 常见故障与对应配置修正

  • 启动失败且提示无法写入 PID 文件
    • 现象:ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid
    • 处理:
      • 确保目录存在且属主正确:mkdir -p /var/run/mongodb & & chown mongodb:mongodb /var/run/mongodb
      • /etc/mongod.conf 中设置 pidFilePath: /var/run/mongodb/mongod.pid
      • 若使用 systemd,确认服务文件中的 PIDFile 与上述路径一致,执行 systemctl daemon-reload 后重启。
  • 开机不自启或 /var/run 清理导致 PID 丢失
    • 处理:优先使用 systemd 托管并配置正确的 PIDFile;避免使用易清理的临时目录;必要时改用持久目录(如 /var/run/mongodb)。
  • 端口未监听或远程连不通
    • 处理:
      • 核对 net.bindIp 是否包含服务器实际 IP;排查防火墙:firewall-cmd --zone=public --add-port=27017/tcp --permanent & & firewall-cmd --reload
      • 本机验证:ss -lntp | grep 27017mongo --host 127.0.0.1:27017
  • 透明大页导致性能抖动或卡死
    • 处理:在 /etc/rc.local 或 systemd 服务中写入
      • echo never > /sys/kernel/mm/transparent_hugepage/enabled
      • echo never > /sys/kernel/mm/transparent_hugepage/defrag
      • 重启后验证:cat /sys/kernel/mm/transparent_hugepage/enabled 应为 never
  • SELinux 拒绝导致启动/写入失败
    • 处理:
      • 临时:setenforce 0(宽容模式)
      • 永久:编辑 /etc/selinux/config,设置 SELINUX=permissivedisabled,重启生效。
  • 系统资源不足引发“卡死”
    • 处理:
      • 监控:topfree -mdf -h
      • 临时缓解:echo 1 > /proc/sys/vm/drop_caches(谨慎,仅在必要时)
      • 限制引擎缓存:在 storage.wiredTiger 下设置 engineConfig.cacheSizeGB(如 4~8GB,视内存而定)。

四 日志与慢查询排查配置

  • 提升日志级别并实时观察
    • 配置:systemLog.verbosity: 2,必要时对组件单独提升;重启后在另一个终端执行 tail -f /var/log/mongodb/mongod.log 观察启动与运行期错误。
  • 慢查询定位
    • 配置:operationProfiling.mode: slowOpoperationProfiling.slowOpThresholdMs: 100
    • 查询:db.system.profile.find().sort({ $natural:-1} ).limit(50);关注 COLLSCAN(全表扫描)、docsExamined/keysExamined 过大、SORT 无索引等关键字,针对性建立或优化索引(必要时使用 background: true 避免阻塞)。
  • 运行时诊断
    • 会话中:db.currentOp(true) 查找长时间运行操作;必要时 db.killOp(opid) 终止异常操作(谨慎)。
  • 日志轮转与容量控制
    • MongoDB 内置:db.adminCommand({ logRotate: 1} )
    • Linux logrotate 示例(/etc/logrotate.d/mongodb):
      • /var/log/mongodb/mongod.log { daily rotate 7 compress delaycompress missingok notifempty create 640 mongodb mongodb sharedscripts postrotate /usr/bin/pkill -USR1 mongod endscript }
    • 建议将日志与数据分盘,避免 I/O 竞争。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS MongoDB故障排查怎么配置
本文地址: https://pptw.com/jishu/785670.html
怎样配置CentOS的MongoDB复制集 MongoDB配置中的内存设置技巧

游客 回复需填写必要信息