MongoDB: Что такое пул соединений и время ожидания? - PullRequest
7 голосов
/ 24 февраля 2010

Итак, мой Пассажир раскручивает 5 экземпляров моего приложения на Rails

Я подключаюсь к MongoDB, используя Connection.new ("localhost", 3000,: pool_size => 1,: timeout => 5)

Зачем мне нужен «пул подключений», если я испытываю накладные расходы только при запуске приложения Rails, а не по запросу? Зачем одному процессу требуется более одного соединения?

А какова цель таймаута? Почему я хотел бы, чтобы соединение истекло? Не должно ли оно сохраняться в течение всего времени жизни Rails-процесса?

Так растерялся ...

Этот вопрос относится только к Ruby и Mongo, но я думаю, что он применим к другим языкам / базам данных.

1 Ответ

3 голосов
/ 24 февраля 2010

Вам не нужно использовать пул соединений здесь. Поскольку вы используете Passenger, просто убедитесь, что каждый экземпляр использует отдельное соединение, перехватывая событие start_worker_process. Это задокументировано в драйвере README.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...