#ruby-on-rails #ruby #mongodb #mongoid #sysadmin
#ruby-on-rails #ruby #mongodb #mongoid #системный администратор
Вопрос:
Если я отменяю и перезапускаю свой mongodb на порту по умолчанию, я нормально подключаюсь и никаких проблем нет.
Когда я делаю это на своем 27018
порту, кажется, что он повторно подключается в моем окне bash, и я получаю это утверждение в конце перезапуска:
initandlisten] waiting for connections on port 27018
websvr] web admin interface listening on port 28018
но когда я запускаю свое приложение, я получаю ошибки типа
Operation failed with the following exception: connection closed
и
Operation failed with the following exception: Broken pipe - send(2)
:10:in `synchronize'
Комментарии:
1. вы говорите «когда приложение настроено на использование monogdb на порту 27017 по умолчанию, оно повторно подключается при перезапуске mongodb, но не при настройке на порт 27018»? Я вам не верю 😉
Ответ №1:
Mongoid создает соединение с процессом MongoDB, а затем сохраняет его по соображениям производительности. Если сервер выходит из строя, соединение на стороне сервера прерывается, и клиент больше не может отправлять запросы.
В вашей конфигурации Mongoid вы можете настроить повторное подключение, чтобы неудачные подключения были повторены даже в случае сбоя.
max_retries_on_connection_failure [2]
Число в квадратных скобках — это количество повторных попыток (с интервалом в полсекунды между каждой попыткой), прежде чем возникнет исключение.