我们面临的问题是,在重新启动Tomcat 7期间,与数据库的连接数量激增。
我们的配置如下,在Tomcat的context.xml上设置:
<Resource auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
initialSize="1"
maxActive="10"
maxAge="600000"
maxIdle="5"
maxOpenPreparedStatements="200"
maxWait="10000"
minEvictableIdleTimeMillis="60000"
minIdle="0"
name="jdbc/backoffice"
password="backoffice"
poolPreparedStatements="true"
rollbackOnReturn="true"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="6000000"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@127.0.0.1:1521:DATABASE"
username="backoffice"
validationQuery="SELECT SYSDATE FROM DUAL"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"
/>
重新启动Tomcat之后,打开的连接数接近700。 战争的重新部署(重命名为“ .war_bk”,重命名为“ .war”)可以解决此问题。
为什么会这样? 我们可以做些什么?
答案 0 :(得分:3)
maxConnLifetimeMillis -1连接的最大生存时间(以毫秒为单位)。超过此时间后,连接将无法进行下一次激活,钝化或验证测试。零或更少的值表示连接具有无限的寿命。
还有maxTotal
maxTotal 8可以同时从该池中分配的活动连接的最大数目,如果没有限制则为负。
您可以将validationQuery
更改为更简单的查询
validationQuery="SELECT 1 FROM DUAL"