Bonjour,
J'ai un gros problème depuis plusieurs mois, et je ne sais plus quoi faire pour le corriger.
Mon serveur est sous resin 4, j'utilise spring 3.02 et hibernate 3 et la dernière version officiel de C3P0.
Il arrive en moyenne 1 fois toute les 2 semaine , que ma base de donnée ce bloque suite a une blocage de processus du à une transaction.
Mes transactions sont assez grosses, généralement un dizaine de requete select et une dizaine d'update dans la meme transaction.
Peut être est ce une erreur et qu'il faudrait que je fasse une transaction pour les select et une pour les insert et update mais j'arrive pas à comprendre pourquoi ma base se bloque en créant des blocage en chaine sur des processus différents.
Voici mon fichier de configuration, si des fois il est la cause de mes problèmes, chose qui m'étonnerais.
J'ai réussis a voir la transactions qui pouvait causer problème et elle contient un envoie de mail en fin de méthode, cette envoie de mail est censé être asynchrone. Donc j'avoue que je comprend pas pourquoi , il pourrait être la cause de ce problème de blocage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> <property name="hibernateProperties"> <map> <entry key="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver"/> <entry key="hibernate.connection.url" value="jdbc:jtds:sqlserver://xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> <entry key="hibernate.connection.username" value="xxxxxxxx"/> <entry key="hibernate.connection.password" value="xxxxxxxx"/> <!-- Query properties --> <entry key="hibernate.show_sql" value="false"/> <entry key="hibernate.format_sql" value="false"/> <entry key="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/> <entry key="hibernate.use_outer_join" value="true"/> <entry key="hibernate.connection.release_mode" value="auto"/> <!-- C3P0 - Connection Pool Provider --> <entry key="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"/> <entry key="hibernate.c3p0.min_size" value="3"/> <entry key="hibernate.c3p0.max_size" value="20"/> <entry key="hibernate.c3p0.acquire_increment" value="1"/> <entry key="hibernate.c3p0.timeout" value="200"/> <entry key="hibernate.c3p0.idle_test_period" value="200"/> <entry key="hibernate.c3p0.num_helper_threads" value="3"/> <entry key="hibernate.c3p0.max_statements" value="0"/> <entry key="hibernate.c3p0.preferredTestQuery" value="SET LOCK_TIMEOUT 15000;Select @@LOCK_TIMEOUT;"/> </map> </property> </bean>
Merci d'avance si une âme charitable arrive a me donner des indications pour solutionner mon problème.
Car la j'en suis au point de me dire que la combo hibernate/C3p0 est complétement inutil.
Partager