MongoDB - черный список фатальных ошибок
Я видел эту ошибку пару раз, и чтобы исправить ее, я просто перезагружаю свой сервер.
Неустранимая ошибка: необработанное исключение "MongoConnectionException" с сообщением "Не удалось подключиться к: localhost:27017: предыдущие попытки подключения не выполнены, сервер помещен в черный список" в /var/www/html/include/config.php:9 трассировке стека: #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} брошено в /var/www/html/include/config.php в строке 9
Тем не менее, я могу быть некоторое время, не видя этого... Как я могу предотвратить возникновение проблемы?
обновление: это произошло снова и после нескольких минут ожидания пришлось перезагрузить компьютер, чтобы сайт снова заработал
3 ответа
Начиная с версии 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 секунд или после перезагрузки программного обеспечения вашего веб-сервера (или PHP-FPM, если вы его используете). Если вы считаете, что это объяснение неверно, пожалуйста, отправьте запрос об ошибке / функции на http://jira.mongodb.org/browse/PHP
По-видимому, это проблема, вызванная ошибкой в PHP-драйвере MongoDB. Проверьте, используете ли вы версию 1.4.0, если да, обновите ее до новой версии, и ошибка должна быть исправлена.
Кажется, что монго обрабатывает соединения само по себе, вы не должны использовать закрытое соединение в вашем коде, если вы хотите использовать постоянное монго соединение, я решил эту проблему, удалив из сценария php-скрипта close соединение следующим образом:
НЕ ИСПОЛЬЗУЙТЕ ЗАКРЫТЬ..............
$client = new MongoClient("mongodb://127.0.0.1:27017");
//close mongo connection
$client->close();
Надеюсь быть полезным.