Tomcat JDBC连接数量与netstat已建立的连接

时间:2018-09-19 07:25:54

标签: tomcat jdbc database-connection connection-pooling netstat

在我们的一种环境中,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似乎创建了JDBC连接池,其初始大小为5个连接,将空闲连接的数量保持为5个,但是由于某些原因,netstat显示的已建立连接的数量大了11倍。

当context.xml中的minIdle =“ 5”和JMX显示numActive + numIdle = 5时,netstat也应该显示5个已建立的连接,不是吗?

我想在维持JDBC池的同时,tomcat会不断打开和关闭与数据库的连接,从netstat的角度来看,它们保持ESTABLISHED状态直到被数据库删除。

我的问题是如何更改tomcat数据源配置以使netstat输出与此配置一致?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

这里有些事情要看:
1)您的netstat命令仅查看不需要的UDP连接(-u)。改用:

netstat -ant | grep -c "${myhostname}:1521.*ESTABLISHED"

# -ant : all, numerical outptut, TCP connections
# grep -c : returns count of matches
# no need to grep PID unless you have more than one tomcat instance,
#  just matching host:1521 is enough.

2)建立的连接上的本地端口是否发生变化?如果是,则由池维护人员主动打开和关闭连接。
3)是否正确配置了DBCP JMX?也许您正在监视this,但这不是您想要的。

要每隔1秒钟连续观看更改,请执行以下操作:

watch -n1 "netstat -ant | grep ':1521.*ESTABLISHED' | nl | tail -n 5"
    11  tcp        0      0 192.168.1.7:50890       172.17.0.23:1521     ESTABLISHED
    12  tcp        0      0 192.168.1.7:58192       172.17.0.23:1521       ESTABLISHED
    13  tcp        0      0 192.168.1.7:54224       172.17.0.23:1521        ESTABLISHED
    14  tcp        0      0 192.168.1.7:34500       172.17.0.23:1521     ESTABLISHED
    15  tcp        0      0 192.168.1.7:54888       172.17.0.23:1521      ESTABLISHED