J'ai une application java déployée sur tomcat version 7. Pour la source de données j'ai utilisé c3p0 qui se connecte à une base de données mysql. Cela fonctionnait bien depuis des années et récemment j'ai commencé à avoir cette erreur: "Un client a expiré en attendant d'acquérir une ressource de com.mchange.v2.resourcepool.BasicResourcePool".c3p0 Un client a expiré en attendant d'acquérir une ressource de com.mchange.v2.resourcepool.BasicResourcePool
Lorsque j'ai ce problème, la seule solution est de redémarrer l'application. Redémarrer mysql n'aide pas.
J'ai aussi des applications php en utilisant la base de données de sauvegarde et ils ne sont pas affectés, ils fonctionnent correctement.
L'application java est utilisée uniquement par une petite équipe, c'est une application backend.
Voici ma configuration c3p0:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db?relaxAutoCommit=true&autoReconnect=true&autoReconnectForPools=true" />
<property name="user" value="viva4578" />
<property name="password" value="amd139fbg" />
<property name="initialPoolSize" value="5" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="20" />
<property name="maxConnectionAge" value="14400" />
<property name="checkoutTimeout" value="30000" />
<property name="acquireIncrement" value="1" />
<property name="acquireRetryAttempts" value="30" />
<property name="testConnectionOnCheckin" value="true" />
<property name="testConnectionOnCheckout" value="true" />
<property name="preferredTestQuery" value="SELECT 1" />
<property name="idleConnectionTestPeriod" value="3600" />
<property name="maxIdleTime" value="7200" />
<property name="maxIdleTimeExcessConnections" value="1800" />
<property name="unreturnedConnectionTimeout" value="3600" />
<property name="debugUnreturnedConnectionStackTraces" value="true" />
</bean>
Voici le journal de sortie de c3p0 après le démarrage de l'application:
Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [
acquireIncrement -> 1,
acquireRetryAttempts -> 30,
acquireRetryDelay -> 1000,
autoCommitOnClose -> false,
userOverrides -> {},
automaticTestTable -> null,
breakAfterAcquireFailure -> false,
checkoutTimeout -> 30000,
connectionCustomizerClassName -> null,
connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester,
contextClassLoaderSource -> caller,
dataSourceName -> z8kflt9n1b12nsh118544e|7bc1a68b,
debugUnreturnedConnectionStackTraces -> true,
description -> null,
driverClass -> com.mysql.jdbc.Driver,
extensions -> {},
factoryClassLocation -> null,
forceIgnoreUnresolvedTransactions -> false,
forceUseNamedDriverClass -> false,
identityToken -> z8kflt9n1b12nsh118544e|7bc1a68b,
idleConnectionTestPeriod -> 3600,
initialPoolSize -> 5,
jdbcUrl -> jdbc:mysql://localhost:3306/db?relaxAutoCommit=true&autoReconnect=true&autoReconnectForPools=true,
maxAdministrativeTaskTime -> 0,
maxConnectionAge -> 14400,
maxIdleTime -> 7200,
maxIdleTimeExcessConnections -> 1800,
maxPoolSize -> 20,
maxStatements -> 0,
maxStatementsPerConnection -> 0,
minPoolSize -> 5,
numHelperThreads -> 3,
preferredTestQuery -> SELECT 1,
privilegeSpawnedThreads -> false,
properties -> {user=******, password=******},
propertyCycle -> 0,
statementCacheNumDeferredCloseThreads -> 0,
testConnectionOnCheckin -> true,
testConnectionOnCheckout -> true,
unreturnedConnectionTimeout -> 3600,
usesTraditionalReflectiveProxies -> false
]
J'utilise la 0-0.9.5 version de C3P0.
Si quelqu'un peut aider
Merci
OK merci pour votre contribution. A mon avis 30 secondes c'est beaucoup sauf s'il y a une requête lente. – kchetoua
J'ai changé la config log4j et maintenant je vois cette exception – kchetoua
Une ressource extraite est en retard, et sera détruite: com.mchange.v2.c3p0.impl.NewPooledConnection Peut-être que c'est la cause du problème? – kchetoua