-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: MySQLNonTransientConnectionExcept nach MySQL Timeout-Auslauf
PostPosted: Fri Aug 07, 2009 2:57 am 
Newbie

Joined: Wed Sep 17, 2008 5:26 pm
Posts: 17
Ich habe ein Webapp programmiert und online gestellt. Die Seite befindet sich noch im Testbetrieb und wird daher zur Zeit fast auschschließlich von mir genutzt. Über Nacht, wenn keine Abrufe stattfinden, läuft allerdings die MySQL Session aus, so dass ich am nächsten Tag ständig Fehlermeldungen auf meiner Seite bekomme und ich die Seite im Tomcat neu laden muss. Ich habe das Ganze mal auf meiner lokalen Maschine getestet und den Timeout für die SQL Verbindung auf 30 Sekunden runtergesetzt:
Code:
[mysqld]
...
wait_timeout=30


Dann erhalte ich, wie auch auf dem Server (nach einigen Stunden), folgende Fehlermeldungen beim Zugriff auf die Datenbank:
Code:
Jul 31, 2009 10:10:56 AM org.apache.catalina.core.ApplicationContext log
SEVERE: Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract parken.client.universal.SearchResult parken.client.search.SearchService.searchParkingPlaces(parken.client.universal.SearchObject)' threw an unexpected exception: org.springframework.dao.DataAccessResourceFailureException: could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query
...
Caused by: org.springframework.dao.DataAccessResourceFailureException: could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query
   at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:627)
   at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
   at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
...
Caused by: org.hibernate.exception.JDBCConnectionException: could not execute query
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
...
Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:


** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.io.EOFException

STACKTRACE:

java.io.EOFException
   at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1963)
   at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2375)



Meine hibernate.cfg.xml sieht so aus:
Code:
<hibernate-configuration>
   <session-factory>

      <property name="connection.url">
         jdbc:mysql://localhost:3306/testDB
      </property>
      
      <property name="connection.driver_class">
         com.mysql.jdbc.Driver
      </property>
      
      <property name="connection.username">
         dbuser
      </property>
      
      <property name="connection.password">
         secret
      </property>
      
      <!--<property name="hbm2ddl.auto">create</property>-->   
      <property name="show_sql">false</property>
      <property name="format_sql">true</property>
      
      <property name="hibernate.c3p0.acquire_increment">3</property>
        <property name="hibernate.c3p0.idle_test_period">14400</property>
        <property name="hibernate.c3p0.timeout">25200</property>
        <property name="hibernate.c3p0.max_size">15</property>
        <property name="hibernate.c3p0.min_size">3</property>


        <property name="hibernate.c3p0.max_statements">0</property>
        <property name="hibernate.c3p0.preferredTestQuery">select 1;</property>
      
        <!-- SQL Dialect to use. Dialects are database specific -->
        <property name="dialect">
          org.hibernate.dialect.MySQLDialect
        </property>
       
        <!-- Mapping files omitted -->

      
   </session-factory>
   
</hibernate-configuration>

Da ich Spring benutze zeige ich Euch noch den Datenbankteil aus meiner applicationContext.xml:
Code:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
      <property name="driverClass" value="com.mysql.jdbc.Driver"/>
      <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/testDB"/>
      <property name="user" value="dbuser"/>
      <property name="password" value="secret"/>
   </bean>
   
   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
      <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
   </bean>


Nun weiß ich leider nicht an welchen Parametern ich schrauben muss damit überprüft wird ob eine bestehende Verbindung noch gültig ist oder nicht. Wie Ihr seht benutze ich C3P0 als ConnectionPool.
So wie ich das verstehe bedeuten die Eigenschaften,
Code:
        <property name="hibernate.c3p0.idle_test_period">14400</property>
        <property name="hibernate.c3p0.timeout">25200</property>

dass nach 14400 Sekunden (=4 Stunden) geprüft wird ob eine Verbindung nicht genutzt wurde und nach 25200 Sekunden (=7 Stunden) wird die Verbindung gelöscht.

Desweiteren habe ich den Timeout in der Mysql Konfdatei /etc/my.cnf auf 24h = 86400sec hochgesetzt. Nun kommt der Fehler halt nach 24 Stunden.

Wie kann ich dieses Problem reparieren?


Top
 Profile  
 
 Post subject: Re: MySQLNonTransientConnectionExcept nach MySQL Timeout-Auslauf
PostPosted: Wed Sep 30, 2009 8:18 am 
Newbie

Joined: Wed Sep 30, 2009 8:07 am
Posts: 1
Hallo,

habe das selbe Problem.
Weiss denn niemand eine Lösung?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.