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.  [ 5 posts ] 
Author Message
 Post subject: Pb Pool de connexion
PostPosted: Fri Jan 27, 2006 7:13 am 
Newbie

Joined: Fri Dec 16, 2005 5:14 am
Posts: 6
Nous utilisons hibernate avec mysql 5, nous avons un schéma de BD par profil d'utilisateurs et donc un PersistenceManagerFactory pour chacun paramétré comme ceci :

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory
hibernate.show_sql=false
hibernate.c3p0.acquire_increment=1
hibernate.c3p0.idle_test_period=10 (valeur volontairement basse pour tester)
hibernate.c3p0.timeout=30 (valeur volontairement basse pour tester)
hibernate.c3p0.min_size=1
hibernate.c3p0.max_size=4
hibernate.c3p0.max_statements=50

le problème est le suivant : Le Pool de connexion semble saturer très vite alors que les sessions sont bien fermées à la fin de chaque requête HTTP,
L'appli se bloque sur cette instruction:
Object.wait(long) line: not available [native method]
BasicResourcePool.awaitAcquire(long) line: 968
BasicResourcePool.checkoutResource(long) line: 208
C3P0PooledConnectionPool.checkoutPooledConnection() line: 260
PoolBackedDataSource.getConnection() line: 94
C3P0ConnectionProvider.getConnection() line: 35
ConnectionManager.openConnection() line: 298
ConnectionManager.getConnection() line: 110
BatchingBatcher(AbstractBatcher).prepareQueryStatement(String, boolean, ScrollMode) line: 88
QueryLoader(Loader).prepareQueryStatement(QueryParameters, boolean, SessionImplementor) line: 1162
QueryLoader(Loader).doQuery(SessionImplementor, QueryParameters, boolean) line: 390
QueryLoader(Loader).doQueryAndInitializeNonLazyCollections(SessionImplementor, QueryParameters, boolean) line: 218
QueryLoader(Loader).doList(SessionImplementor, QueryParameters) line: 1593
QueryLoader(Loader).list(SessionImplementor, QueryParameters, Set, Type[]) line: 1577
QueryLoader.list(SessionImplementor, QueryParameters) line: 395
QueryTranslatorImpl.list(SessionImplementor, QueryParameters) line: 271
SessionImpl.list(String, QueryParameters) line: 844
QueryImpl.list() line: 74
QueryImpl(AbstractQueryImpl).uniqueResult() line: 603

en regardant bien tous les threads de mon appli qui tournent, je viens de remarquer qque chose d'étrange, j'ai 3 threads bloqués là dessus :
Object.wait(long) line: not available [native method]
ChangeNotifyingSynchronizedIntHolder(Object).wait() line: 474
GlobalMaxOnlyStatementCache(GooGooStatementCache).closeAll(Connection) line: 256
NewPooledConnection.closeAllCachedStatements() line: 532
NewPooledConnection.close(Throwable) line: 411
NewPooledConnection.close() line: 143
C3P0PooledConnectionPool$1.destroyResource(Object) line: 236
BasicResourcePool$5.run() line: 634
ThreadPoolAsynchronousRunner$PoolThread.run() line: 368

du coup je comprend mieux pourquoi ma 4è demande de connection plante mais pourquoi les 3 threads sont bloqués? pb d'interbocage??

merci pour votre aide...


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jan 27, 2006 9:36 am 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
quelques idées pour analyser le problem.

Est-ce que le problem occur avec beacoup d'utilisateur (threads)?
Si, il y a 10 clients, tu as une bonne chance d'avoir un problem de connection, si tu ne ferme pas ou deconnecte ton session. (en plus de session qui sont ouverte pour langue temps pose de problem)

Si, le problem n' exist qu'on après le 5ieme client est là, (l'un client après l'autre) c'est plutot un probleme de fermer la connection.

Est-ce que tu peux verifier ca?

Sebastian

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jan 27, 2006 10:26 am 
Newbie

Joined: Fri Dec 16, 2005 5:14 am
Posts: 6
J'ai analysé mon code et j'ai trouvé des créations de session successives au sein d'une même requête HTTP, j'ai donc corrigé ça et tout semble fonctionner par contre si je configure mon pool avec max_size=1 là ça ne marche pas dès ma 1ère tentative d'acquisition de connection, est-ce un bug hibernate? encore un bug chez moi? ou y a t il une explication à ceci?


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jan 27, 2006 10:36 am 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
C'est normal, hibernate peut avoir à utiliser des connexions en //

_________________
Emmanuel


Top
 Profile  
 
 Post subject:
PostPosted: Fri May 19, 2006 11:02 am 
Newbie

Joined: Fri Dec 16, 2005 5:14 am
Posts: 6
ok.
par contre j'ai mis 10 en taille max de mon pool (c3p0) et je lance un test, le pool arrive rapidement à sa taille max mais au bout d'un moment j'ai des timeout awaitAcquire alors que mes 10 connexions apparaissent comme libre dans mysql....
une idée?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 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.