php - MongoDB 列入黑名单的 fatal error

标签 php mongodb

我已经多次看到这个错误,要修复它,我只需重新启动我的服务器。

Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted' in /var/www/html/include/config.php:9 Stack trace: #0 /var/www/html/include/config.php(9): MongoClient->__construct('mongodb://local...') #1 /var/www/html/classes.php(3): include('/var/www/html/i...') #2 /var/www/html/myusers.php(8): include('/var/www/html/c...') #3 {main} thrown in /var/www/html/include/config.php on line 9

但是,我可能会在一段时间内看不到它...我怎样才能防止问题发生?

更新:又发生了,等了几分钟后,我不得不重新启动以使网站再次运行

最佳答案

自 1.4 版本的 MongoDB PHP 驱动程序以来,如果无法联系到服务器,我们会将其“列入黑名单”长达一分钟。这样我们就不会用连接猛击服务器,这可能会超时。这样做主要是为了确保在副本集环境中,我们仍然可以仅使用另一台主机继续进行,但是当然,如​​果您只有一台机器,这就有点棘手了。

如果您使用 MongoLog,那么您可以很容易地发现幕后发生的事情:

MongoLog::setModule(MongoLog::ALL);
MongoLog::setLevel(MongoLog::ALL);
MongoLog::setCallback('print_mongo_log');
function print_mongo_log($a, $b, $c) { echo $c, "\n"; }

这将显示驱动程序正在尝试执行的所有操作。看到出现问题时的第一次转储会很有趣,而且有一次它“卡在”黑名单上。

上述警告将在 60 秒后消失,或者在您的 Web 服务器软件(或者您使用的是 PHP-FPM)重新启动后消失。如果您认为此解释不正确,请在 http://jira.mongodb.org/browse/PHP 提交错误/功能请求。

关于php - MongoDB 列入黑名单的 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918864/

相关文章:

php - 如何从 jquery datepicker 列出一个月中的所有日期?

php - 如何扩展异常以发送电子邮件

mongodb - 按匹配的子文档排序

mongodb - pymongo 游标 'touch' 以避免超时

mongodb - 如何使用 mongoengine 的 mongodb 的 query.explain()

Java MongoDB - 指定使用哪个 forEach

php - 使用 PHP MYSQL 加密

php - 如何修复以获取 MySql 中的特定数据

javascript - AJAX 在 codeigniter 上返回 NaN

javascript - 如何使用 mongodb 迭代对象内的数组