我们有一个带有 2 个分片的 mongodb,每个分片都有这些服务器:
- Shard 1:Master,运行 MongoD 和 Config 服务器
- Shard 1-s1:Slave,运行 MongoD 和 MongoS 服务器
- Shard 1-s2:Slave,运行 MongoD 和 MongoS 以及 Arbiter 服务器
- Shard 2:Master,运行 MongoD 和 Config Server
- Shard 2-s1:Slave,运行 MongoD 和 Config 和 MongoS 服务器
- Shard 2-s2:Slave,运行 MongoD 和 MongoS 以及 Arbiter 服务器
但是最近几天mongodb总是失败,经过几天的搜索,我发现MongoD在Shard 1(Master)运行总是在修改太多连接后出现故障,其他MongoD没有这个问题。
当 S1Master 的 MongoD 运行过多连接约 2 小时后,4 个 Mongos Server 会一一关闭。这是 Mongos 的错误日志(10.81.4.72:7100 运行 MongoD):
8 月 20 日星期二 20:01:52 [conn8526] DBClientCursor::init call() 失败 8 月 20 日星期二 20:01:52 [conn3897] ns:user.dev 无法在所有分片中初始化光标,因为:为 ns 检测到过时的配置:用户。dev ParallelCursor::_init @ s01/10.36.31.36:7100,10.42.50.24:7100,10.81.4.72:7100 尝试:0 8 月 20 日星期二 20:01:52 [conn744] ns:user.dev 无法初始化所有光标分片,因为:为 ns 检测到过时的配置:user.d ev ParallelCursor::_init @ s01/10.36.31.36:7100,10.42.50.24:7100,10.81.4.72:7100 尝试:0
我不知道为什么这个 mongod 恢复了这么多连接,这些块显示分片效果很好。