【发布时间】:2019-09-25 04:09:03
【问题描述】:
我们面临一个问题,即在 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”)解决了问题。
为什么会这样? 我们可以做些什么不同的事情?
【问题讨论】:
-
Tomcat 是否有可能没有完全关闭?我以前见过这个,Tomcat 的
java进程仍在运行,但释放了 TCP 端口,因此下一次启动工作正常。当你重新部署时,可能会发生类似的事情。 -
@a_horse_with_no_name 我们总是使用“ps -ef | grep java”检查tomcat是否关闭(在问题开始之前)。如果它还没有倒下,我们就杀了它。无论如何,我们认为如果是问题所在,连接数将接近设置为池限制的两倍,但它接近 700。
-
tomcat 运行在哪个操作系统上?你如何重新启动tomcat?请发布确切的命令。
-
@LuisMuñoz 它在 CentOS 上运行。 “service tomcat stop”,之后我们使用“ps -ef | grep tomcat”检查并开始使用“service tomcat start”。
-
查看war里面的context.xml,可能有重复资源。
标签: java tomcat apache-commons-dbcp