2013-09-28 4 views
2

У меня есть приложение Rails 4.0, в котором используется MongoDb. Я использую Mongoid как ORM. До сегодняшнего дня все прекрасно работало.Внезапные проблемы с подключением

Внезапно я получаю случайные ошибки таймаута.

Первое сообщение от MOPED:

MOPED: Retrying connection attempt 1 more time(s). runtime: n/a 

, а затем

Timeout::Error is thrown: Exception: Waited for item but none was pushed. 

Глядя на источник, это похоже, что проблема где-то в коде пула соединений, но я не достаточно знакомы с этим, чтобы сказать.

У кого-нибудь есть опыт работы с этой проблемой?

+0

Я только что эта проблема сегодня ... волновалась на час и подумал, что это возможно потому, что я нахожусь в Мексике на неделю, а прокси - странные. Если бы я мог повышать 10 раз, я бы это сделал. –

ответ

0

Вы управляете рельсами на вершине чего? JRuby? Puma? Sidekiq? Кажется, проблема в том, что у вас нет достаточного количества соединений в пуле .. Или, может быть, код не освобождает соединения после финиша (все еще не происходит. Размер пула подключения по умолчанию равен 5, так что если у вас более 5 одновременных запросов на многопоточном сервере (например, puma), вы начнете получать эти ошибки. Я думаю, что вам нужно увеличить количество подключений в пуле (вы можете передать опцию в mongoid. YML pool_size) до 20 или что-то. И не вижу, если ошибки все еще происходит.

Если вы до сих пор, что код не освобождает соединения обратно в бассейн вы можете открыть вопрос на GitHub https://github.com/mongoid/moped/issues/new

+0

Я просто запускаю стандартную установку на Ruby 2.0 с WEBrick. Я подумал, что после прочтения этого: https://groups.google.com/forum/#!topic/mongoid/yesQ2AHtPyI, что опция pool_size больше не применима. Однако, поставив его на что-то более высокое, проблема уходит. Спасибо за предложение! – user2825755

+0

thats old ... на mongoid 4. вы должны настроить pool_size. Я просто не понимаю, как вы протекаете соединения, если вы используете МРТ на WEBrick. thats super wierd. –

+0

Это точно моя проблема. Я не понимаю, как это может произойти. Я хотел бы получить объяснение, чтобы лучше понять. – Elyasin

Смежные вопросы