Ubuntu 上 MongoDB 故障排除实战手册
一 快速定位流程
sudo systemctl status mongodsudo ss -lntp | grep 27017 或 sudo lsof -iUDP:27017 -iTCP:27017 -sTCP:LISTENsudo tail -f /var/log/mongodb/mongod.logmongosh --host 127.0.0.1:27017nc -vz <host> 27017 或 telnet <host> 27017),并确认云安全组/本机防火墙已放行 27017。二 常见故障与修复
sudo systemctl restart mongod。sudo chown -R mongodb:mongodb /var/lib/mongodb),再启动服务。sudo systemctl stop mongodsudo rm /var/lib/mongodb/mongod.locksudo -u mongodb mongod -f /etc/mongod.conf --repairsudo systemctl start mongodsudo lsof -i :27017 或 sudo ss -lntp | grep 27017,结束冲突进程或修改 mongod.conf 的 port。sudo ufw allow 27017)。mongosh 本地直连验证。--authenticationDatabase。三 日志分析与性能瓶颈定位
grep -E 'E|F' /var/log/mongodb/mongod.log | awk '$1 > "2025-12-18T11"'cat /var/log/mongodb/mongod.log | grep -oP '\d{4}-\d{2}-\d{2}T\d{2}' | sort | uniq -cslowMS: 100,重启或在运行时 db.setLogLevel(1, "command")。COLLSCAN、keysExamined:0 且 docsExamined 很大时,创建合适索引(如 db.users.createIndex({age: 1}))。E REPL [replication] heartbeat failed 等,先测试网络连通性,再用 rs.status() 检查成员状态与 oplog 窗口,必要时安排重新同步。WiredTiger error 等 F STORAGE 错误时,先 db.serverStatus().storageEngine 查看引擎状态,再按指导执行修复流程(如 --repair)。mlogfilter、mplotqueries、mloginfo)做时间过滤、慢查询可视化与统计;将日志接入 ELK/Grafana 做长期观测。四 维护与预防建议
mongod soft nofile 64000mongod hard nofile 64000db.serverStatus()、db.currentOp() 做深入诊断。