[refactor](jdbc) refactor jdbc connection num in datasource (#18563)
now maybe jdbc have problem that there are too many connections and they do not release,
so change the property of datasource: init = 1, min = 1, max = 100, and idle time is 10 minutes.
diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
index ba9995a..65e05d1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcClient.java
@@ -98,8 +98,10 @@
dataSource.setUsername(jdbcUser);
dataSource.setPassword(password);
dataSource.setMinIdle(1);
- dataSource.setInitialSize(2);
- dataSource.setMaxActive(5);
+ dataSource.setInitialSize(1);
+ dataSource.setMaxActive(100);
+ dataSource.setTimeBetweenEvictionRunsMillis(600000);
+ dataSource.setMinEvictableIdleTimeMillis(300000);
// set connection timeout to 5s.
// The default is 30s, which is too long.
// Because when querying information_schema db, BE will call thrift rpc(default timeout is 30s)
diff --git a/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java b/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java
index e20e415..f75debb 100644
--- a/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java
+++ b/fe/java-udf/src/main/java/org/apache/doris/udf/JdbcExecutor.java
@@ -229,10 +229,16 @@
ds.setUsername(jdbcUser);
ds.setPassword(jdbcPassword);
ds.setMinIdle(1);
- ds.setInitialSize(2);
- ds.setMaxActive(5);
+ ds.setInitialSize(1);
+ ds.setMaxActive(100);
ds.setMaxWait(5000);
+ ds.setTimeBetweenEvictionRunsMillis(600000);
+ ds.setMinEvictableIdleTimeMillis(300000);
druidDataSource = ds;
+ // here is a cache of datasource, which using the string(jdbcUrl + jdbcUser +
+ // jdbcPassword) as key.
+ // and the datasource init = 1, min = 1, max = 100, if one of connection idle
+ // time greater than 10 minutes. then connection will be retrieved.
JdbcDataSource.getDataSource().putSource(jdbcUrl + jdbcUser + jdbcPassword, ds);
}
conn = druidDataSource.getConnection();