CentOS MongoDB故障排查有哪些方法
导读:CentOS 上 MongoDB 故障排查方法 一 快速定位流程 检查服务状态:使用命令查看 mongod 是否运行,若未运行则尝试启动并观察失败原因。 命令示例:sudo systemctl status mongod;sudo sys...
CentOS 上 MongoDB 故障排查方法
一 快速定位流程
- 检查服务状态:使用命令查看 mongod 是否运行,若未运行则尝试启动并观察失败原因。
命令示例:sudo systemctl status mongod;sudo systemctl start mongod - 查看服务日志:第一时间读取 MongoDB 日志(默认路径:/var/log/mongodb/mongod.log),从报错关键词定位配置、权限或数据目录问题。
命令示例:tail -f /var/log/mongodb/mongod.log - 校验配置文件:核对 /etc/mongod.conf 中关键项(如 net.bindIp、net.port、storage.dbPath、systemLog.path)是否存在语法或路径错误。
- 网络连通性:从客户端测试到服务器 27017 端口的连通性(ping、telnet 或 nc),确认网络与端口可达。
- 防火墙与安全组:在 CentOS 7 上放行 27017/tcp(firewalld/iptables),云环境同步检查安全组入站规则。
- 认证与权限:若启用鉴权,使用具备相应权限的账户连接,并指定正确的 authenticationDatabase。
命令示例:mongo -u < 用户名> -p < 密码> --authenticationDatabase < 数据库>
以上步骤覆盖了“服务—配置—网络—权限”的闭环排查,可快速判定大多数连接与启动类故障。
二 常见故障场景与处理要点
- 服务无法启动
- 查看日志中具体报错(如路径不存在、权限不足、配置错误)。
- 校验 dbPath/logPath 目录存在且属主为 mongod:mongod;必要时修正权限并重试。
命令示例:chown -R mongod:mongod /var/lib/mongo /var/log/mongodb - 若异常关机或数据文件异常,可用修复模式启动:/usr/bin/mongod -f /etc/mongod.conf --repair
- 端口未监听或配置错误
- 确认 net.bindIp 包含客户端来源网段或设置为 0.0.0.0(仅在内网可信环境使用),net.port=27017。
- 重启后在服务器本地用 ss/ netstat 确认监听,再从外部测试连通性。
- 远程连接被拒绝
- 服务器防火墙放行 27017/tcp,云主机安全组入站规则同步放行。
- 客户端使用正确主机与端口,并携带认证信息连接。
- 认证失败
- 核对用户名、密码与 –authenticationDatabase,必要时在 admin 或其他授权库下创建/授权用户。
- 实例“卡死”或响应缓慢
- 先用系统工具检查 CPU/内存/磁盘 是否瓶颈(top、iostat),再回到 MongoDB 日志与运行状态定位。
- 重启仅作临时恢复,需结合日志与性能数据找到根因。
以上要点对应到实际运维中“无法启动、端口与网络、认证、性能卡顿”的高频场景,按序排查可显著缩短恢复时间。
三 性能与查询问题排查
- 识别慢查询与阻塞操作
- 使用 $currentOp 查看当前运行与阻塞操作,必要时终止问题操作。
- 开启 Database Profiler 或将 slowOpThresholdMs(默认 100 ms)调低,将慢查询写入 system.profile 做进一步分析。
- 在日志中检索超过阈值的慢查询,结合上下文判断索引缺失或执行计划退化。
- 执行计划与索引分析
- 使用 db.collection.explain() 检查是否走索引、扫描量与执行时间。
- 通过 $indexStats 与 $collStats 评估索引使用率与集合统计,清理无用索引、优化热点集合布局。
- 实时与历史性能观测
- 使用 mongostat/mongotop 观察操作吞吐、锁等待与读写热点;在 Shell 中查看 db.serverStatus() 获取内存、连接、操作计数等核心指标。
以上方法覆盖从“发现慢操作—定位根因—验证优化”的完整闭环,适用于高延迟与吞吐异常问题。
- 使用 mongostat/mongotop 观察操作吞吐、锁等待与读写热点;在 Shell 中查看 db.serverStatus() 获取内存、连接、操作计数等核心指标。
四 日志管理与长期观测
- 日志配置与轮转
- 在 /etc/mongod.conf 中设置日志路径、追加模式与级别:
systemLog: destination: file; logAppend: true; path: /var/log/mongodb/mongod.log; verbosity: 1 - 使用 logrotate 做按日轮转、压缩与保留,示例:
/var/log/mongodb/mongod.log { daily; rotate 7; compress; missingok; notifempty; sharedscripts; copytruncate; postrotate /bin/kill -SIGUSR1 $(cat /var/run/mongod.pid 2> /dev/null || cat /var/log/mongodb/mongod.lock) 2> /dev/null || true; endscript }
- 在 /etc/mongod.conf 中设置日志路径、追加模式与级别:
- 集中化分析与告警
- 结合 Filebeat/Logstash 将日志送入 ELK,或用 Prometheus + Grafana 采集 mongostat/mongotop 与 serverStatus 指标,配置阈值告警,实现可视化与长期趋势分析。
上述做法既保障日志可审计与可追溯,又便于容量规划与性能趋势研判。
- 结合 Filebeat/Logstash 将日志送入 ELK,或用 Prometheus + Grafana 采集 mongostat/mongotop 与 serverStatus 指标,配置阈值告警,实现可视化与长期趋势分析。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS MongoDB故障排查有哪些方法
本文地址: https://pptw.com/jishu/769951.html
