timebetweenevictionrunsmillis maxwait conexiones tomcat database-connection

tomcat - maxwait - timebetweenevictionrunsmillis



¿Cuál es la diferencia entre maxActive vs. maxIdle para las agrupaciones de conexiones de Tomcat? (3)

maxActive

the maximum number of active connections that can be allocated from this pool at the same time.

Este atributo se usa para limitar el número de conexiones que un grupo puede tener abierto.

maxIdle

(int) The maximum number of connections that should be kept in the pool **at all times.**

Esto es para limitar las conexiones inactivas. Las conexiones (que no superen el valor de maxIdle) no se liberarán, por lo que la próxima solicitud de conexiones será mucho más rápida.

Entonces, en una palabra, maxActive es limitar las conexiones máximas.

Pero inactivo ( maxIdle o minIdle ) es más por cuestión de rendimiento (tiempo de intercambio con espacio / recursos), entre los que, maxIdle es limitar las conexiones máximas (los recursos) con los que va a intercambiar tiempo.

El grupo de conexiones de tomcat tiene una configuración llamada maxActive y una configuración llamada maxIdle son mis preguntas.

  1. ¿Cuál es la diferencia entre estas dos configuraciones?
  2. ¿Cuál es un escenario de ejemplo del mundo real donde podría tener un valor diferente para maxActive que el que tendría para maxIdle?

Por alguna razón, los documentos no tienen sentido para mí. maxActive y maxIdle existen tanto en apache dbcp como en tomact 7 jdbc-pool de acuerdo con los documentos en http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

maxActive (int) El número máximo de conexiones activas que se pueden asignar desde este grupo al mismo tiempo. El valor predeterminado es 100

maxIdle (int) El número máximo de conexiones que se deben mantener en el grupo en todo momento. El valor predeterminado es maxActive: 100 conexiones inactivas se verifican periódicamente (si están habilitadas) y las conexiones que han estado inactivas por más tiempo que minEvictableIdleTimeMillis se liberarán. (también vea testWhileIdle)


En entornos pequeños, las conexiones a bases de datos no son un problema, porque no hay demasiadas conexiones y los recursos del servidor están casi intactos. En entornos grandes, la cantidad de conexiones a la base de datos consume muchos recursos, por lo tanto, debe optimizar la manera en que administra las conexiones a la base de datos, ya que usar la menor cantidad posible de conexiones le dará un mejor rendimiento. En este punto, maxActive establece la cantidad máxima de conexiones que ese grupo puede realizar en la base de datos, lo que limita los recursos asignados al solicitante. Con maxIdle, usted especifica que, si una conexión "está inactiva", se cerrará, a menos que haya mínimas conexiones "maxIdle". ¿Por qué no menos de maxIdle ?, porque necesita algunas conexiones para estar listo para las próximas solicitudes a la base de datos, por lo que no necesita abrir y cerrar tantas conexiones si el grupo debe llenarse, entonces, libera muchos recursos .


maxActive es sencillo. maxIdle se puede explicar de esta manera, digamos que tiene 100 conexiones máximas activas y dice que establece maxIdle en 80. Suponiendo que no hay solicitudes dirigidas a la base de datos, solo se probarán 80 conexiones (a través de la consulta de validación) y se mantendrá activo. Los otros 20 estarán cerrados. Entonces, en cualquier punto, solo puedes tener 80 conexiones inactivas.
Es posible que desee configurar esto para que sea un número diferente para evitar conexiones adicionales (innecesarias) a la base de datos. Porque cada conexión que es servida por la base de datos consume recursos (como la memoria).
Pero, suponiendo que haya establecido el tamaño de maxActive en 100 y que los 100 estén en uso casi todo el tiempo, esta configuración obviamente no tendrá importancia.