MongoDB回写异常

时间:2013-01-31 13:48:38

标签: mongodb

我们生产的mongodb集群是一个分片集群,有3个副本集,每个集合3个服务器,当然还有3个配置服务器。

我们还有14个直接连接到mongoDb的Web服务器抛出在每个Web服务器(客户端)中运行的mongos进程。

整个群集每分钟接收5000次插入。

有时,当我们想要对mongoDb执行操作时,我们开始从java应用程序中获取异常。

这是stackTrace:

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进程的问题,但我想找到这个问题的最终解决方案。在半夜重启所有东西并不是一个快乐的解决方案。

当发生此错误时,可能有2或3个其他Web服务器同时出现相同的错误,因此我认为整个mongoDb集群中存在问题,单个隔离的Web服务器中没有问题。

有谁知道为什么mongo会返回写回错误?以及如何解决它?

我正在使用mongoDb 2.2.0。

提前致谢。

费尔

1 个答案:

答案 0 :(得分:0)

我相信你看到Writeback错误“泄漏”到getLastError输出中,然后继续报告,即使有问题的操作没有错误。这是早期版本的MongoDB 2.2中的一个问题,并且已经修复,请参阅:

https://jira.mongodb.org/browse/SERVER-7958 https://jira.mongodb.org/browse/SERVER-7369 https://jira.mongodb.org/browse/SERVER-4532

在撰写此答案时,我建议使用2.2.4,但基本上是最新的2.2分支,以解决您的问题。