2013-04-02 7 views
0

Я подвожуРельсы подключение размер пула для WEBrick

ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5 seconds (waited 5.000798 seconds). The max pool size is currently 1; consider increasing it.) 

, когда я пытаюсь запустить WEBrick (рельсы сервера) с размером пула 1, и никаких проблем с более высокими размерами бассейна.

Что использует WEBrick первое подключение, и каков наилучший размер пула для однопоточного приложения? Является ли это проблемой, зависящей от WEBrick, или она применяется к любым другим серверам (например, Unicorn)?

Рельсы версии 3.2.13

Обновление. Просто подтвердил это с единорогом, он отлично работает с одним соединением.

+0

Вы пытаетесь использовать WEBrick в производственной среде? – Catfish

+0

Определенно нет, поэтому вторая часть вопроса. – UncleGene

ответ

2

Если я правильно помню, Rails резервирует соединение с базой данных при ее загрузке и использует оставшиеся соединения, доступные в пуле соединений для обработки запросов. Даже если вы никогда не касаетесь объектов ActiveRecord в течение срока действия запроса, Rails по-прежнему будет пытаться зарезервировать одно соединение из пула для каждого запроса или заблокировать до тех пор, пока он не будет доступен до предела таймаута.

Размер пула по умолчанию - 5 соединений: 1 зарезервирован для Rails + 4 для запросов.

Rails делает это для обеспечения безопасности потока в приложении.

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

Это не относится к WEBrick. Предел пула соединений влияет на приложение одинаково независимо от того, какой сервер приложений работает.

+0

Я уверен, что вы и не правы. Консоль/тесты успешно выполняются с одним подключением, и я просто подтвердил, что единорог также прекрасен – UncleGene