Cómo evitar que se caiga la conexión a MySql por las noches

Pentaho utiliza hibernate para gestionar la persistencia en Base de datos. Y en la configuración que utiliza Pentaho, hibernate mantiene abierta una conexión siempre. El problema viene cuando MySql detecta que hay una sesión abierta inactiva y la cierra.

Para solucionar este problema. Que suele ocurrir cuando el servidor está inactivo durante mucho tiempo (noches y fines de semana) tenemos a nuestro querido amigo c3po que se encargará de hablar con la base de datos periódicamente para que nuestra conexión no esté ociosa suficiente tiempo como para que MySql la cierre.

Esto está recogido en el wiki de pentaho aqui. De hecho esta entrada es sólo para tenerlo todo a mano.

Lo que hay que hacer es bajarse a c3po y ponerlo en algún sitio accesible. En el caso de Tomcat en common/endorsed/lib. Tras lo cual ya podemos añadir al archivo de configuración de hibernate la configuración de c3po.

Para hacerlo editamos pentaho-solutions/system/hibernate/mysql5.hibernate.cfg.xml y añadimos lo siguiente justo después de <session-factory>

         <!--
            hibernate c3p0 settings
        -->

        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquire_increment">3</property>
        <property name="hibernate.c3p0.idle_test_period">10</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">75</property>
        <property name="hibernate.c3p0.max_statements">0</property>
        <property name="hibernate.c3p0.timeout">25200</property>
        <property name="hibernate.c3p0.preferredTestQuery">select 1</property>
        <property name="hibernate.c3p0.testConnectionOnCheckout">true</property>

de forma que nuestro archivo quedará tal que así:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
  PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
         <!--
            hibernate c3p0 settings
        -->

        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquire_increment">3</property>
        <property name="hibernate.c3p0.idle_test_period">10</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">75</property>
        <property name="hibernate.c3p0.max_statements">0</property>
        <property name="hibernate.c3p0.timeout">25200</property>
        <property name="hibernate.c3p0.preferredTestQuery">select 1</property>
        <property name="hibernate.c3p0.testConnectionOnCheckout">true</property>

  
    <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

    <property name="hibernate.generate_statistics">true</property>
    <property name="hibernate.cache.use_query_cache">true</property>
  
    <!--  MySQL Configuration -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://SERVIDOR:3306/hibernate</property>
    <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    <property name="connection.username">hibuser</property>
    <property name="connection.password">password</property>
    <property name="connection.pool_size">10</property>
    <property name="show_sql">false</property>
    <property name="hibernate.jdbc.use_streams_for_binary">true</property>
    <!-- replaces DefinitionVersionManager -->
    <property name="hibernate.hbm2ddl.auto">update</property>
    <!-- load resource from classpath -->
    <mapping resource="hibernate/mysql5innodb.hbm.xml" />
    <!--  This is only used by Pentaho Administration Console. Spring Security will not use these mapping files -->	
    <mapping resource="PentahoUser.hbm.xml" />
    <mapping resource="PentahoRole.hbm.xml" />
    
  </session-factory>
</hibernate-configuration>
 
pentaho/c3po.txt · Última modificación: 2010/03/14 10:52 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki