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

Tomcat JDBC connection amount vs netstat ESTABLISHED connections

在我们的一个环境中有 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 命令returns 结果如下:

netstat -anu | grep ${pid}| grep ESTABLISHED | grep ${myhostname}:1521 | wc -l

55

这个结果在几天内保持稳定。

同时我通过 JMX 监控 tomcat 数据源属性:

活跃人数 = 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) 您的 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