Использование пула в database.yml
Наиболее широко используемые параметры в database.yml следующие:
adapter
encoding
database
pool
username
password
socket
host
port
timeout
Я знаю использование большей части выше, но пул.
Поэтому я хочу знать, что такое использование опции пула в database.yml, или есть какой-либо другой параметр, который нам нужно установить для приложения с очень интенсивным трафиком.
Ответы
Ответ 1
Он устанавливает количество возможных подключений для каждого рубинового процесса. Таким образом, если вы загружаете приложение для ваших рельсов, или используете транзакции чрезмерно. Пределы здесь зависят от вашей настройки. Рассмотрим это:
- 50 рубиновых процессов
- каждый со 100 потоками
- mysql с настройкой 1000 одновременных подключений
поэтому имеет смысл, что каждый процесс может открыть не более 20 соединений (50 * 20 == 1000) в данный момент времени. Поэтому вы должны установить значение pool
равным 20 или меньше.
Ответ 2
Для всех, кто ищет ответ на этот вопрос, основная идея заключается в том, что база данных может поддерживать только так много одновременных соединений, поэтому существует необходимость ограничить открытые соединения. Атрибут pool
указывает максимальное количество подключений, которые можно открыть в данный момент времени.
Дополнительную информацию об этом см. http://guides.rubyonrails.org/configuring.html#database-pooling. В руководстве явно не сказано, что пул - это общее соединение для приложения, но это ощущение, которое я получаю после его чтения.
Ответ 3
pool
- это конфигурация размера пула соединений, по умолчанию это 5.
http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html