2012-09-28 6 views
28

opciones más utilizado en database.yml son del siguiente:¿cuál es el uso de la opción de la piscina en database.yml

adapter 
encoding 
database 
pool 
username 
password 
socket 
host 
port 
timeout 

Sé que el uso de la mayor parte de la anterior, pero la piscina. Así que quiero saber cuál es el uso de la opción pool en database.yml o hay algún otro parámetro que debemos establecer para que la aplicación tenga un tráfico muy intenso.

Respuesta

22

Se establece la cantidad de posibles conexiones por proceso de rubí. Entonces, en caso de que esté enhebrando su aplicación de rieles, o utilice transacciones excesivamente. Los límites aquí dependen de tu configuración. Considere esto:

  • 50 rubí procesa
  • cada una con 100 hilos
  • un mysql con un ajuste de 1000 conexiones simultáneas

así que tiene sentido que cada proceso puede abrir a lo sumo 20 conexiones (50 * 20 == 1000) en un momento dado. Por lo tanto, establecería el valor pool en 20 o menos.

+0

¿dónde encaja este 100 en "cada uno con 100 hilos" en la ecuación anterior? (50 * 20 == 1000) –

+0

¿Significa que el tamaño de la agrupación depende únicamente del proceso de trabajo y no de los hilos? @moritz –

3

Para cualquier otra persona que esté buscando una respuesta a esta pregunta, la idea básica parece ser que una base de datos solo puede admitir tantas conexiones simultáneas, por lo que se necesita una forma de limitar las conexiones abiertas. El atributo pool especifica la cantidad máxima de conexiones que se pueden abrir en un momento dado.

Consulte http://guides.rubyonrails.org/configuring.html#database-pooling para obtener más información al respecto. La guía no dice explícitamente que el grupo es el total de conexiones para la aplicación, pero esa es la sensación que tengo después de leerla.

Cuestiones relacionadas