Как работает пул соединений с рельсами? - PullRequest
2 голосов
/ 27 февраля 2011

Я использую приложение rails 2.3.5, которое поддерживает пул соединений mysql с моей базой данных. Но я помню, что читал, что мои сервера mongrel являются однопоточными. Какой смысл иметь пул соединений для однопоточного приложения? Есть ли способ многопоточности моего приложения?

Кроме того, понимают ли пулы соединений, что ruby ​​1.8 имеет "зеленые" потоки?

Ура! * * 1005

1 Ответ

5 голосов
/ 27 февраля 2011

Управление соединениями

Основное преимущество пула соединений для однопоточного сервера, такого как Mongrel / Passenger / etc, заключается в том, что соединение устанавливается / поддерживается в обработчике Rack вне основногоРельсовая обработка запросов.Это позволяет устанавливать соединение один раз или много раз, так как оно используется по-разному.Цель состоит в том, чтобы повторно использовать установленное соединение и минимизировать количество соединений.Это должно исключить необходимость повторного подключения в течение заданного цикла обработки запросов и, возможно, даже между запросами (если я правильно помню).

Несколько одновременных подключений

Хотя большинство случаев использования (Mongrel / Passenger) являются однопоточными и могут использовать только одно соединение за раз - есть JRuby и серверы сред / приложений, которые имеют полную многопоточную поддержку.Rails является поточно-ориентированным с 2.2

TL; DR:

Пул устанавливает соединение автоматически.Некоторые люди используют несколько одновременных соединений БД из пула.

...