diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 05ee7ae385..c6d83aed2b 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -87,6 +87,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat private int poolingCount = 0; private int activeCount = 0; private int notEmptyWaitThreadCount = 0; + private int activePeak = 0; // threads private CreateConnectionThread createConnectionThread; @@ -126,6 +127,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat notEmptyWaitCount = 0; notEmptySignalCount = 0L; notEmptyWaitNanos = 0; + + activePeak = 0; } finally { lock.unlock(); } @@ -412,6 +415,9 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat holder.incrementUseCount(); activeCount++; + if (activeCount > activePeak) { + activePeak = activeCount; + } poolalbeConnection = new PoolableConnection(holder); } catch (InterruptedException e) { @@ -1038,6 +1044,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat public int getLockQueueLength() { return lock.getQueueLength(); } + + public int getActivePeak() { + return activePeak; + } public String dump() { lock.lock(); diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java b/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java index 8c2c1a473e..d63c9a6168 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSourceMBean.java @@ -51,5 +51,5 @@ public interface DruidDataSourceMBean extends DruidAbstractDataSourceMBean { String getVersion(); - + int getActivePeak(); }