mongodb在centos上的故障排查指南
导读:MongoDB 在 CentOS 上的故障排查指南 一 快速定位流程 检查服务状态与端口 查看服务:sudo systemctl status mongod 启动服务:sudo systemctl start mongod 监听端口:s...
MongoDB 在 CentOS 上的故障排查指南
一 快速定位流程
- 检查服务状态与端口
- 查看服务:sudo systemctl status mongod
- 启动服务:sudo systemctl start mongod
- 监听端口:ss -lntp | grep 27017 或 netstat -tulpen | grep 27017
- 查看日志定位错误
- 实时日志:sudo tail -f /var/log/mongodb/mongod.log
- 校验配置文件关键项
- 配置文件:/etc/mongod.conf
- 重点项:net.bindIp、net.port、storage.dbPath、systemLog.path
- 快速连通性测试
- 本机:mongo --eval ‘db.runCommand({ ping:1} )’
- 远程:nc -vz < 服务器IP> 27017 或 telnet < 服务器IP> 27017
- 认证与权限
- 带认证连接:mongo -u < 用户名> -p < 密码> --authenticationDatabase < 数据库>
二 常见故障与修复
- 服务起不来
- 查看日志中具体报错(如路径、权限、配置语法)。
- 校验数据目录与日志目录权限:
- sudo chown -R mongod:mongod /var/lib/mongo
- sudo chown -R mongod:mongod /var/log/mongodb
- 配置或数据异常时,使用修复模式(会重建索引,谨慎操作):
- /usr/bin/mongod -f /etc/mongod.conf --repair
- 无法远程连接
- 配置文件中将 net.bindIp 设为 0.0.0.0(或包含服务器内网/公网 IP),端口 27017。
- 防火墙放行:
- firewalld:sudo firewall-cmd --add-port=27017/tcp --permanent & & sudo firewall-cmd --reload
- 云厂商安全组:入站/出站放行 TCP 27017。
- 开机不自启
- 启用开机自启:sudo systemctl enable mongod
- 若曾手动改动 unit 文件,升级后需重新校对或执行 sudo systemctl daemon-reload。
- PID 文件路径问题
- 老版本在 /var/run/mongodb/mongod.pid 可能因重启丢失,建议:
- 在 /etc/mongod.conf 中设置:pidFilePath: /mongod/mongod.pid
- 创建目录与文件并赋权:sudo mkdir -p /mongod & & sudo touch /mongod/mongod.pid & & sudo chown mongod:mongod /mongod
- 同步修改 unit 的 PIDFile= 后执行 sudo systemctl daemon-reload。
- 老版本在 /var/run/mongodb/mongod.pid 可能因重启丢失,建议:
- SELinux 导致启动失败
- 临时:sudo setenforce 0
- 永久:编辑 /etc/selinux/config 将 SELINUX=permissive(或 disabled),重启生效。
三 性能卡顿与资源瓶颈
- 先看资源与日志
- 资源:top/htop、iostat -x 1、free -m
- MongoDB:mongostat、db.serverStatus()、db.stats()、慢查询日志
- 常见原因与处理
- 内存不足或缓存命中低:为 WiredTiger 设置合理缓存(如 storage.wiredTiger.engineConfig.cacheSizeGB),优先使用 SSD。
- 连接数/文件句柄不足:提升系统 ulimit -n,MongoDB 连接开销与索引设计相关,避免过多索引。
- 查询未走索引:用 explain() 分析执行计划,建立合适索引,避免全表扫描。
- 透明大页(THP):建议关闭以减少内存管理抖动。
- 锁争用/卡死:结合日志与 serverStatus 的 globalLock、locks 指标,必要时重启服务并优化长事务与热点集合。
四 安全与网络加固
- 最小暴露面
- 仅开放必要端口(默认 27017/TCP),限制来源 IP。
- 使用强认证与基于角色的访问控制(RBAC),为应用创建最小权限用户。
- 网络安全
- 云环境同时配置安全组与操作系统防火墙,变更后及时验证连通性。
- 系统层安全
- 保持 SELinux 为 enforcing 并配置正确的策略,或明确使用 permissive 并记录审计。
- 禁用不必要的服务与端口,定期更新 MongoDB 与系统补丁。
五 常用命令清单
- 服务与端口
- sudo systemctl status|start|enable mongod
- ss -lntp | grep 27017
- 日志与配置
- sudo tail -f /var/log/mongodb/mongod.log
- cat /etc/mongod.conf
- 连通性与认证
- nc -vz 27017
- mongo --eval ‘db.runCommand({ ping:1} )’
- mongo -u -p --authenticationDatabase
- 性能与健康
- mongostat
- db.serverStatus()、db.stats()
- 权限与目录
- sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb
- sudo firewall-cmd --add-port=27017/tcp --permanent & & sudo firewall-cmd --reload
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: mongodb在centos上的故障排查指南
本文地址: https://pptw.com/jishu/763082.html
