From 9c0b69d0c2a0960c6d4c00e17371e5ccd2492d4f Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 25 Sep 2011 02:44:10 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=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@904 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../alibaba/druid/pool/DruidDataSource.java | 27 +++++++++++++++++-- .../druid/pool/DruidDataSourceMBean.java | 6 +++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 89b9476088..0c4fbae0fa 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -81,8 +81,11 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat private long notEmptyWaitCount = 0L; private long notEmptySignalCount = 0L; private long notEmptyWaitNanos = 0L; + private int activePeak = 0; + private long activePeakTime = 0; private int poolingPeak = 0; + private long poolingPeakTime = 0; // store private ConnectionHolder[] connections; @@ -130,6 +133,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat notEmptyWaitNanos = 0; activePeak = 0; + activePeakTime = 0; + poolingPeak = 0; } finally { lock.unlock(); } @@ -418,6 +423,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat activeCount++; if (activeCount > activePeak) { activePeak = activeCount; + activePeakTime = System.currentTimeMillis(); } poolalbeConnection = new PoolableConnection(holder); @@ -709,11 +715,19 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat lock.unlock(); } } - + public int getPoolingPeak() { return poolingPeak; } + public Date getPoolingPeakTime() { + if (poolingPeakTime <= 0) { + return null; + } + + return new Date(poolingPeakTime); + } + public long getRecycleCount() { return recycleCount; } @@ -808,9 +822,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat lock.lock(); try { connections[poolingCount++] = new ConnectionHolder(DruidDataSource.this, connection); - + if (poolingCount > poolingPeak) { poolingPeak = poolingCount; + poolingPeakTime = System.currentTimeMillis(); } errorCount = 0; // reset errorCount @@ -1058,6 +1073,14 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat return activePeak; } + public Date getActivePeakTime() { + if (activePeakTime <= 0) { + return null; + } + + return new Date(activePeakTime); + } + public String dump() { lock.lock(); try { diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java b/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java index 3b4a49b730..baece24e6b 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java @@ -15,6 +15,8 @@ */ package com.alibaba.druid.pool; +import java.util.Date; + /** * @author wenshao @@ -62,4 +64,8 @@ public interface DruidDataSourceMBean extends DruidAbstractDataSourceMBean { * @return */ int getPoolingPeak(); + + Date getActivePeakTime(); + + Date getPoolingPeakTime(); }