我有一个分片,使用 mongo v2.4.11。它必须有 mongos、3 个配置和 8 个副本集(每个集 2 个副本,意味着 16 个节点用于分片)
如下所示,它一直有异常。
原因:com.mongodb.MongoException:无法连接到新的副本集主服务器 [shardA01:27017],错误:无法连接到服务器 shardA01:27017
我试图寻找任何可能有类似问题的人,但我一无所获。这发生在大约 1000 个请求中的 1 个。
分片的所有节点都使用 aws 虚拟服务器托管。
我所做的是 - 检查 CPU 和内存,但一切都很好,甚至不超过 10% 的使用率 - 将主优先级设置为节点之一。
有谁知道问题是什么?或者如何进一步调查这个问题?
问题似乎是mongodb的版本。不知何故,对于 mongodb < 2.6 的套接字问题会间歇性地发生。当它发生时,您必须重新启动您的 mongos 节点。
不幸的是,根据您的描述,这似乎是网络问题。我相信确实如此,而您暗示错误消失了,并且副本集有效地相信它确实有一个主人。
根据要求,需要调查的一些事情是检查 mongo 日志中的连接错误。我在 Azure 中遇到过这样一种情况,如果辅助节点不在同一个区域中,我必须使用副本集中辅助成员的主机名。无论如何,这是一个更好的做法。我能够通过 Mongo 日志将其识别为问题。
您可能还想编写一个小脚本,将副本集的其他成员相互 ping 通并记录结果。让它运行一夜或更长时间,看看它会产生什么。至少,如果存在内部网络问题,您将拥有一些切实的证据来向您自己的 IT 人员展示,或者如果这是他们的问题,则向 AWS 展示。
我遇到的另一个问题是我是否有无线连接和硬连接。应用程序和服务器等在等待您的 IT 部门如何设置您的网络时,可能会因竞争连接而遇到问题。这听起来很疯狂,但这是我在过去一年中学会检查的常见事情。