Actualmente le doy mantenimiento a un proyecto que se conecta a una BD MySQL, la carga al inicio no era muy grande y por simplicidad use la configuracion por defecto que me ofrece Spring para el DataSource:
p:driverClassName="${dataSource.driver}"
p:url="${dataSource.url}"
p:username="${dataSource.username}"
p:password="${dataSource.password}" />
La aplicación fue crecienco en cuanto a usuarios y transacciones, esto le pego al rendimiento y detecte que el problema se debia al pobre o nula administración de las conexiones a la BD, por tal motivo me di a la tarea de investigar como solventar esto y me encontre con BoneCP el cual se define asi mismo como una libreria para administrar el pool de conexiones de facil y libre uso.
Para descargar mediante Maven, colocar en el pom las siguientes dependencias:
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp</artifactId>
<version>0.7.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp-spring</artifactId>
<version>0.7.1.RELEASE</version>
</dependency>
Finalmente mi DataSource quedo de la siguiente manera:
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="${dataSource.driver}" />
<property name="jdbcUrl" value="${dataSource.url}" />
<property name="username" value="${dataSource.username}"/>
<property name="password" value="${dataSource.password}"/>
<property name="idleConnectionTestPeriod" value="60"/>
<property name="idleMaxAge" value="240"/>
<property name="maxConnectionsPerPartition" value="30"/>
<property name="minConnectionsPerPartition" value="10"/>
<property name="partitionCount" value="3"/>
<property name="acquireIncrement" value="5"/>
<property name="statementsCacheSize" value="100"/>
<property name="releaseHelperThreads" value="3"/>
</bean>
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp</artifactId>
<version>0.7.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.jolbox</groupId>
<artifactId>bonecp-spring</artifactId>
<version>0.7.1.RELEASE</version>
</dependency>
Finalmente mi DataSource quedo de la siguiente manera:
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="${dataSource.driver}" />
<property name="jdbcUrl" value="${dataSource.url}" />
<property name="username" value="${dataSource.username}"/>
<property name="password" value="${dataSource.password}"/>
<property name="idleConnectionTestPeriod" value="60"/>
<property name="idleMaxAge" value="240"/>
<property name="maxConnectionsPerPartition" value="30"/>
<property name="minConnectionsPerPartition" value="10"/>
<property name="partitionCount" value="3"/>
<property name="acquireIncrement" value="5"/>
<property name="statementsCacheSize" value="100"/>
<property name="releaseHelperThreads" value="3"/>
</bean>
Probado y puesto en producción exitosamente. Saludos!!!
No hay comentarios:
Publicar un comentario