我的公司最近将MongoDB添加到我们使用的数据库中,而且事情进展顺利,但每隔一段时间我们就会得到一个奇怪的错误。复制几乎是不可能的,并且在测试的最后一周只发生了四次,但是一旦我们开始生产,我们的客户将比我们测试的频率更频繁地使用该网站。我们正试图在它失控之前解决它。
我们得到的错误是:(为了便于阅读而增加了换行符)
Fatal error: Uncaught exception 'MongoCursorException' with message
'Failed to connect to: 10.0.1.114:27017: send_package: error reading from socket:
Timed out waiting for header data' in
/opt/local/apache2/htdocs/stage2/library/Shanty/Mongo/Connection/Group.php on line 134
我们在PHP中使用ShantyMongo,它是一个远程连接。错误实际上是间歇性的,刷新页面足以让它消失。作为一个临时解决方案,我们将所有mongo方法包装在for ... try / catch中,这样如果抛出一个MongoException,我们再重试该方法两次,希望它能成功完成三个中的一个尝试,因为错误是如此不可预测。