My db connections seem to be lost after an extended period of inactivity
(for a web application). And the only way to get the connections to work
again is to restart tomcat.
My tomcat.jdbc.pool.Datasource settings have:
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="1000"/>
<property name="defaultAutoCommit" value="true"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
Is it the removedAbonded and abandonedTimeout? Does it mean "after 60
seconds, remove the connection from the pool?
I guess what I need is a minActive setting then?
Do you have a connection validation query and test set?
E.g. testOnBorrow=true?
p
--
[key:62590808]
There could be a number of reasons that this occurs. Perhaps a network issue is causing them to be disconnected or the database may be timing them out. At any rate, it's not likely that the problem would be caused by the "removeAbandoned" / "abandonedTimeout" settings, unless you application is not properly returning connections to the connection pool.
https://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-exa[..]
You probably want to add testOnBorrow="true" and "validationQuery=SELECT 1" (or some other valid query for your DB). See the following link for an explanation of those properties.
https://commons.apache.org/dbcp/configuration.html
This will cause your connections to be validated prior to their use by your application. Stale connections will be removed and replaced with new, working connections.
No. See either of the links I've referenced above for an explanation of these settings.
There's no "minActive" setting. You have "minIdle", but I don't think that would help here.
Dan
N«yªÞ²u«Zm«²ØZµÚ ¢)ÚÚ^®*Æ¥)"Z}Ê'ç-
you may want to explore the maxAge option for this, as we can disconnect and create new connections before the DB does kills it as long lived
Daniel,
Your suggestion seems to have worked so far, thanks!
testOnBorrow="true" and "validationQuery=SELECT 1"
Daniel,
+1
- -1
This is the wrong documentation for tomcat-pool. You're looking for
http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
On the other hand, there was no mention of a Tomcat version, what type
of pool is actually being used (I inferred tomcat-pool from the
subject line as well as the use of "tomcat.jdbc.pool.DataSource") and
the use of <property> elements seems antiquated, so I must admit I'm a
little confused.
- -chris
I'm using tomcat 7, in a spring mvc application. The properties is in my
spring-context.xml file.
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/mydb"/>
<property name="username" value="testuser"/>
<property name="password" value="abc"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="1000"/>
<property name="defaultAutoCommit" value="true"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="testOnBorrow" value="true" />
<property name="validationQuery" value="SELECT 1" />
</bean>