¿Cómo elegir el tamaño máximo de grupo de conexiones?

  ?   

¿Es solo una cifra aleatoria? ¿O hay algún estudio que sugiera utilizar un rango particular para un caso de uso específico?

Bueno, suponiendo que está hablando de un sistema de producción, entonces la “adivinación de números aleatorios” definitivamente no es la respuesta. En realidad, la “suposición de números aleatorios” nunca es la respuesta para ningún tipo de configuración en un entorno de producción. Lo mismo ocurre con “solo aceptar los valores predeterminados del producto”.

Las propiedades de la agrupación de conexiones (como max_size ) dependen de algunos factores:

  • Uso previsto . Por ejemplo, si espera un patrón de uso típico de 10 usuarios concurrentes, con una ráfaga ocasional de 20 usuarios, no tiene mucho sentido establecer el número 50 como un tamaño máximo incluso si cree que su máquina puede manejarlo. Si bien parece inofensivo a primera vista, debe recordar que las conexiones de base de datos son un recurso costoso y, a veces, es posible que desee limitar el uso para que coincida con sus expectativas, aunque solo sea para poner a prueba sus propias suposiciones y conocer el Un patrón de uso real, similar al de la producción, del sistema y para evitar que su aplicación sea una fuente de recursos, lo que podría afectar a otras aplicaciones.

  • Recursos disponibles . Si sabe (y eso es fácil de verificar) que su base de datos solo puede aceptar 30 conexiones a la vez, entonces establecer un número mayor que 30 no tiene sentido, independientemente del patrón de uso de la aplicación.

  • Diseño de la aplicación . ¿Su aplicación va a utilizar principalmente conexiones de corta duración? ¿Conexiones duraderas? ¿Está configurando un tiempo de espera para llamadas JDBC, por lo que sus llamadas JDBC tienen un límite de tiempo para comenzar? Por ejemplo, hay una diferencia en cómo configuraría un grupo de conexiones cuando sabe que está configurando un tiempo de espera de 30 segundos por operación, en comparación con cómo definiría ese grupo sabiendo que establece un tiempo de espera de 2 minutos.

  • Consideraciones específicas del producto . No estoy seguro acerca de c3p0 , pero ciertos contenedores que proporcionan mecanismos de agrupación de conexiones llevan sus propios factores a la ecuación. Si está utilizando la funcionalidad de agrupación de conexiones proporcionada por un contenedor, debe leer la documentación de ese contenedor para ver si el proveedor del contenedor tiene alguna idea con respecto a la configuración del mecanismo de agrupación de conexiones que le proporcionan.

… Simplemente no hay que estimar un número.

… Y no se limite a asumir los valores por defecto del producto.