我们在生产中的 mongodb 集群是一个分片集群,有 3 个副本集,每个副本集有 3 个服务器,当然还有另外 3 个配置服务器。
我们还有 14 个直接连接到 mongoDb 的网络服务器抛出运行在每个网络服务器(客户端)中的 mongos 进程。
整个集群每分钟接收 5000 次插入。
有时,当我们的 java 应用程序想要对 mongoDb 执行操作时,我们会开始从我们的应用程序中获取异常。
这是堆栈跟踪:
caused by com.mongodb.MongoException: writeback
com.mongodb.CommandResult.getException(CommandResult.java:100)
com.mongodb.CommandResult.throwOnError(CommandResult.java:134)
com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:142)
com.mongodb.DBTCPConnector.say(DBTCPConnector.java:183)
com.mongodb.DBTCPConnector.say(DBTCPConnector.java:155)
com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:270)
com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:226)
com.mongodb.DBCollection.insert(DBCollection.java:147)
com.mongodb.DBCollection.insert(DBCollection.java:90)
com.mongodb.DBCollection$insert$0.call(Unknown Source)
如果我检查 mongos 进程抛出它提供的 rest _status 命令,它会返回 200OK。我们可以解决重新启动我们正在使用的 tomcat 并重新启动 mongos 进程的问题,但我想找到这个问题的最终解决方案。不得不在半夜重新启动所有东西并不是一个令人愉快的解决方案。
When this error happens, maybe 2 or 3 another webservers got the same error at the same time, so I imagine that there is a problem in the entire mongoDb cluster, no a problem in a single isolated webserver.
Does anyone know why mongo returns a writeback error? and how to fix it?
I'm using mongoDb 2.2.0.
Thanks in advance.
Fer