【发布时间】:2019-02-23 07:18:40
【问题描述】:
在我们的一个环境中,tomcat 8 具有以下 JDBC 数据源配置:
<Resource name="jdbc/mydatasource"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@myhostname:1521:dbname"
username="username"
password="password"
removeAbandoned="false"
removeAbandonedTimeout="300"
logAbandoned="true"
initialSize="5"
maxActive="100"
maxIdle="100"
minIdle="5"
maxWait="120000"
/>
Netstat 命令返回以下结果:
netstat -anu | grep ${pid}| grep ESTABLISHED | grep ${myhostname}:1521 | wc -l
55
此结果在几天内保持稳定。
同时我通过JMX监控tomcat数据源属性:
numActive = 0
numIdle = 5
这些结果在几天内也保持稳定。
看起来tomcat创建了初始大小为5个连接的JDBC连接池,保持空闲连接数为5,但由于某些原因,netstat显示的已建立连接数是原来的11倍。
当 context.xml 和 JMX 中的 minIdle="5" 显示 numActive+numIdle=5 netstat 也应该显示 5 个已建立的连接,不是吗?
我想在维持 JDBC 池的同时,tomcat 不断打开和关闭与数据库的连接,从 netstat 的角度来看,这些连接一直处于 ESTABLISHED 状态,直到被数据库删除。
我的问题是如何更改tomcat数据源配置,使netstat输出与此配置一致?
非常感谢您。
【问题讨论】:
标签: tomcat jdbc database-connection connection-pooling netstat