使用自动故障切换时出现PHP MongoDB错误

使用自动故障切换时出现PHP MongoDB错误,php,mongodb,Php,Mongodb,我最难弄明白这件事了。我有一个2服务器副本集,其中一个仲裁器与当前主服务器一起运行 当我连接或发出查询时,会出现间歇性错误,其范围包括以下任一错误: 无法确定主 无法连接到[将主机置于此处] 断管异常 MongoCursorExceptions 服务器运行的时间越长,这种情况似乎发生得越频繁。一段时间后,无法建立任何连接,当我尝试登录mongo shell时出现以下错误: MongoDB shell version: 1.8.1 connecting to: test Wed May 11

我最难弄明白这件事了。我有一个2服务器副本集,其中一个仲裁器与当前主服务器一起运行

当我连接或发出查询时,会出现间歇性错误,其范围包括以下任一错误:

  • 无法确定主
  • 无法连接到[将主机置于此处]
  • 断管异常
  • MongoCursorExceptions
服务器运行的时间越长,这种情况似乎发生得越频繁。一段时间后,无法建立任何连接,当我尝试登录mongo shell时出现以下错误:

MongoDB shell version: 1.8.1
connecting to: test
Wed May 11 16:36:50 MessagingPort recv() errno:104 Connection reset by peer 127.0.0.1:27017
Wed May 11 16:36:50 SocketException: remote:  error: 9001 socket exception [1] 
Wed May 11 16:36:50 DBClientCursor::init call() failed
exception: DBClientBase::findOne: transport error: 127.0.0.1 query: { whatsmyuri: 1 }
(顺便说一句,通过详细(-vvv)日志记录,运行的每个查询似乎都会出现9001套接字异常。)

当我重新启动mongo服务器时,事情会恢复并开始工作,但不会持续很长时间

无论我使用什么连接选项组合,都没有效果。当我将两个Web服务器都更改为连接到主副本时,一切都开始工作。没有错误。没有自动故障转移:(.奇怪的是,replicaSet选项仍然设置,这意味着PHP驱动程序仍然需要确定它所连接的那个是否是一个主机,如果没有连接到它,那么什么也不做

这告诉我问题存在于PHP驱动程序中,它在尝试确定是否连接到主服务器后尝试连接到主服务器。为了尝试和支持我的理论,我告诉其中一台服务器连接到辅助服务器。我立即开始从该服务器收到错误。而不是从另一台服务器收到错误仍连接到主。请切换回,无错误

有人能解释一下吗

我的设置: -2个Web服务器 -在这两个平台上使用Apache/PHP -MongoDB副本集跨这两个 -二对一 -另一方面是主要和仲裁人 -MongoDB 1.8.1 -PHP驱动程序1.1.4 -PHP 5.3.3 -Apache 2.2.17 -RedHat 5.5(Tikanga)

这是MongoDB用户邮件列表上的重新发布


可能最好结束讨论,让讨论结束。

我想保留这两个选项。有更好的机会找到答案,也有更好的机会让其他遇到相同问题的人找到答案。如果一个得到正确答案,我可以更新另一个。仅供参考,您的答案最好作为评论。我不会投票否决您,但其他人会投票否决可以