MongoTimeoutException连接超时问题:执行插入代码后报错如何解决?
解决MongoDB连接超时及连接拒绝问题
问题场景
执行代码中grid.insertOne(doc)语句时触发如下错误:
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches PrimaryServerSelector. Client view of cluster state is { type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}
涉及代码片段:
MongoCollection<Document> grid = mongodb.getCollection("grid"); Document doc = Document.parse(json); grid.insertOne(doc);
排查与解决步骤
- 确认MongoDB服务运行状态:本地环境直接执行
mongod命令启动服务,检查是否有启动失败的日志;远程服务器需登录后查看mongod进程是否存活,可使用ps aux | grep mongod命令排查。 - 校验连接配置正确性:检查MongoDB客户端的连接字符串,确保主机IP、端口(默认27017)填写无误。若为远程连接,需确认服务器防火墙已开放对应端口,且客户端IP在允许访问的白名单内。
- 验证认证权限(若启用):如果MongoDB开启了身份认证,确认连接时传入的用户名、密码正确,且该账号拥有目标集合
grid的写入权限。 - 测试网络连通性:在客户端机器执行
ping <MongoDB主机IP>确认网络可达;用telnet <MongoDB主机IP> 27017或nc -zv <MongoDB主机IP> 27017测试端口是否能正常连通。
内容的提问来源于stack exchange,提问作者wonka
相关产品推荐
相关产品推荐

