diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 288a8be668..55b1164ddf 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -882,8 +882,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat map.put("ConnectionConnectMillisMax", stat.getConnectionStat().getConnectMillisMax()); map.put("ConnectionErrorLastTime", stat.getConnectionStat().getErrorLastTime()); - map.put("ConnectionAliveMillisMax", stat.getConnectionStat().getAliveMillisMax()); - map.put("ConnectionAliveMillisMin", stat.getConnectionStat().getAliveMillisMin()); + map.put("ConnectionAliveMillisMax", stat.getConnectionConnectAliveMillisMax()); + map.put("ConnectionAliveMillisMin", stat.getConnectionConnectAliveMillisMin()); } else { map.put("ConnectionActiveCount", null); map.put("ConnectionActiveCountMax", null); diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/DataSourceProxyImpl.java b/src/main/java/com/alibaba/druid/proxy/jdbc/DataSourceProxyImpl.java index f292b2205a..a21397b55d 100644 --- a/src/main/java/com/alibaba/druid/proxy/jdbc/DataSourceProxyImpl.java +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/DataSourceProxyImpl.java @@ -288,8 +288,8 @@ public class DataSourceProxyImpl implements DataSourceProxy, DataSourceProxyImpl map.put("ConnectionConnectMillisMax", stat.getConnectionStat().getConnectMillisMax()); map.put("ConnectionErrorLastTime", stat.getConnectionStat().getErrorLastTime()); - map.put("ConnectionAliveMillisMax", stat.getConnectionStat().getAliveMillisMax()); - map.put("ConnectionAliveMillisMin", stat.getConnectionStat().getAliveMillisMin()); + map.put("ConnectionAliveMillisMax", stat.getConnectionConnectAliveMillisMax()); + map.put("ConnectionAliveMillisMin", stat.getConnectionConnectAliveMillisMin()); } else { map.put("ConnectionActiveCount", null); map.put("ConnectionActiveCountMax", null); diff --git a/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java b/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java index ccdf965b81..0c540ac157 100644 --- a/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java +++ b/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java @@ -162,4 +162,30 @@ public class JdbcDataSourceStat implements JdbcDataSourceStatMBean { } return aliveNanoSpan / (1000 * 1000); } + + public long getConnectionConnectAliveMillisMax() { + long nowNano = System.nanoTime(); + long max = this.getConnectionStat().getAliveNanoMax(); + + for (JdbcConnectionStat.Entry connection : connections.values()) { + long connectionAliveNano = nowNano - connection.getEstablishNano(); + if (connectionAliveNano > max) { + max = connectionAliveNano; + } + } + return max / (1000 * 1000); + } + + public long getConnectionConnectAliveMillisMin() { + long nowNano = System.nanoTime(); + long min = this.getConnectionStat().getAliveNanoMin(); + + for (JdbcConnectionStat.Entry connection : connections.values()) { + long connectionAliveNano = nowNano - connection.getEstablishNano(); + if (connectionAliveNano < min || min == 0) { + min = connectionAliveNano; + } + } + return min / (1000 * 1000); + } }