Подтвердить что ты не робот

Использование пула в database.yml

Наиболее широко используемые параметры в database.yml следующие:

adapter
encoding
database
pool
username
password
socket
host
port
timeout

Я знаю использование большей части выше, но пул. Поэтому я хочу знать, что такое использование опции пула в database.yml, или есть какой-либо другой параметр, который нам нужно установить для приложения с очень интенсивным трафиком.

4b9b3361

Ответ 1

Он устанавливает количество возможных подключений для каждого рубинового процесса. Таким образом, если вы загружаете приложение для ваших рельсов, или используете транзакции чрезмерно. Пределы здесь зависят от вашей настройки. Рассмотрим это:

  • 50 рубиновых процессов
  • каждый со 100 потоками
  • mysql с настройкой 1000 одновременных подключений

поэтому имеет смысл, что каждый процесс может открыть не более 20 соединений (50 * 20 == 1000) в данный момент времени. Поэтому вы должны установить значение pool равным 20 или меньше.

Ответ 2

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

Дополнительную информацию об этом см. http://guides.rubyonrails.org/configuring.html#database-pooling. В руководстве явно не сказано, что пул - это общее соединение для приложения, но это ощущение, которое я получаю после его чтения.