From 66427ef248d5068e0797d9b300f6bf77a4957d24 Mon Sep 17 00:00:00 2001 From: wenshao Date: Fri, 1 Jul 2011 02:21:46 +0000 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@339 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../alibaba/druid/pool/DruidDataSource.java | 4 +-- .../druid/proxy/jdbc/DataSourceProxyImpl.java | 4 +-- .../druid/stat/JdbcDataSourceStat.java | 26 +++++++++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) 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); + } }