MongoDB集群故障,寻找MongoDB高手!

飞晏 发布于 2013/08/22 14:54
阅读 2K+
收藏 1

1个MongoDB服务,分了2个sharding,每个sharding有3台机器:1个master和2个slave。全部服务如下所示,一共是4个Mongos、3个Mongo Config Server、2个仲裁节点和6个MongoD。


  1. S1M)Shard 1: Master, running MongoD and Config server
  2. S1S1Shard 1-s1: Slave, running MongoD and MongoS server
  3. S1S2Shard 1-s2: Slave, running MongoD and MongoS and Arbiter server
  4. S2MShard 2: Master, running MongoD and Config Server
  5. S2S1Shard 2-s1: Slave, running MongoD and Config and MongoS server
  6. S2S2Shard 2-s2: Slave, running MongoD and MongoS and Arbiter server

因为某种查不到的原因,MongoS开始陆续的挂掉。日志显示,其中S1M上面运行的MongoD被分配大量的连接,一段时间后导致too many open connections(8000),这个MongoD虽然在运行,但是已经无法连接,所以会导致Config Server无法连接此MongoD,最终导致MongoS一个一个的挂掉。

由上图可以,首先排除Shard Key异常。

Mongos最开始异常的时候可以连接,但是无法执行集合级别的查询:uncaught exception: error { "$err" : "socket exception", "code" : 11002 }

Mongos完全挂掉的日志如下:

Tue Aug 20 20:01:52 [conn8526] DBClientCursor::init call() failed Tue Aug 20 20:01:52 [conn3897] ns: user.dev could not initialize cursor across all shards because : stale config detected for ns: user. dev ParallelCursor::_init @ s01/S1S2:7100,S1S1:7100,S1M:7100 attempt: 0 Tue Aug 20 20:01:52 [conn744] ns: user.dev could not initialize cursor across all shards because : stale config detected for ns: user.d ev ParallelCursor::_init @ s01/S1S2:7100,S1S1:7100,S1M:7100 attempt: 0
StackOverflow上面问了同样的问题: http://stackoverflow.com/questions/18371463/mongos-distribute-too-much-query-to-one-mongod

如果解决不了,希望可以给我一些比较稳定的方案,auto-sharding真心不靠谱啊...


加载中
0
震秦
震秦

我们5台pc目前已经存了9KW的数据了. 之前也出现过各种奇妙的问题, 但是还没有出现你这样的问题

根据描述4个Mongos, 我觉得不应该启动这么多个. 一般的2个足矣.

看你的架构, 应该是一个高可用的集群.提示的错误还真是游标问题. 

建议你重启集群,然后先启动一个mongos看看是不是能好一点.

飞晏
飞晏
上周五我上线了个使用这个MongoDB集群的项目,数据库就莫名其妙的恢复了。我只是增加了一个删除功能,奇怪!非常奇怪!还是得准备一套更高效、更稳定的方案。anyway,非常谢谢你的回复。
飞晏
飞晏
回复 @震秦 : 全部来了一遍,没用
震秦
震秦
回复 @飞晏 : 是的. 全都重启一下.
飞晏
飞晏
回复 @震秦 : 是要把mongod、mongos、mongo config都关掉吗?
震秦
震秦
回复 @飞晏 : 把所有的节点都关闭, 然后重启还不行吗?
下一页
0
飞晏
飞晏
@红薯  帮我找个大神, 搞定请吃饭!
0
王瑞平
王瑞平
看上去是游标数不够了
0
lipengHeke
lipengHeke
控制每个节点的连接数
返回顶部
顶部