// 每个连接最多缓存多少个 SQL(建议值为 20)
dataSource.setMaxPoolPreparedStatementPerConnectionSize(20);
// 检查空闲连接的频率,单位毫秒,⾮正整数时表⽰不进⾏检查(建议值:2000)
dataSource.setTimeBetweenEvictionRunsMillis(2000);
// 连接池中某个连接的空闲时长达到 N 毫秒后, 连接池在下次检查空闲连接时,将回收该连接,要⼩于防⽕墙超时设置 netfilter.nf_conntrack_tcp_timeout_established dataSource.setMinEvictableIdleTimeMillis(600000);
// 配置⼀个连接在池中最⼤⽣存的时间,单位是毫秒
dataSource.setMaxEvictableIdleTimeMillis(900000);
// 程序没有 close 连接且空闲时长超过 minEvictableIdleTimeMillis,则会执⾏ validationQuery 指定的 SQL,以保证该程序连接不会池 kill 掉,其范围不超过 minIdle 指定的 dataSource.setKeepAlive(true);
/
/ 检查池中的连接是否仍可⽤的 SQL 语句,druid 会连接到数据库执⾏该 SQL,如果正常返回,则表⽰连接可⽤,否则表⽰连接不可⽤
dataSource.setValidationQuery("SELECT 1");
// 当程序请求连接,池在分配连接时,是否先检查该连接是否有效(⾼效,并且保证安全性;建议值为 true)
dataSource.setTestWhileIdle(true);
// 程序申请连接时,进⾏连接有效性检查(低效,影响性能;建议值为 false)
dataSource.setTestOnBorrow(false);
// 程序返还连接时,进⾏连接有效性检查(低效,影响性能;建议值为 false)
dataSource.setTestOnReturn(false);
// 物理连接初始化的时候执⾏的 sql
Collection<String> connectionInitSqls = new ArrayList<>(10);
connectionInitSqls.add("SELECT 1 FROM DUAL");
dataSource.setConnectionInitSqls(connectionInitSqls);
/*
这⾥配置的是插件,常⽤的插件有:
监控统计:stat
⽇志监控:log4j2
防御 SQL 注⼊:wall
*/
dataSource.setFilters("stat,log4j2");
// 是否合并多个 DruidDataSource 的监控数据
dataSource.setUseGlobalDataSourceStat(true);
/
/ 监控统计
// 是否启⽤慢 SQL 记录
dataSource.addConnectionProperty("druid.stat.logSlowSql", "true");
// 执⾏时间超过 slowSqlMillis 的就是慢,单位毫秒(建议值 500)
dataSource.addConnectionProperty("druid.stat.slowSqlMillis", "500");
// 要求程序从池中 get 到连接后,N 秒后必须 close,否则 druid 会强制回收该连接,不管该连接中是活动还是空闲,以防⽌进程不会进⾏ close ⽽霸占连接(建议值为 fals // dataSource.setRemoveAbandoned(false);
// 设置 druid 强制回收连接的时限,当程序从池中 get 到连接开始算起,超过此值后,druid将强制回收该连接,单位秒(应⼤于业务运⾏最长时间)
// dataSource.setRemoveAbandonedTimeout();
// 当 druid 强制回收连接后,是否将 stack trace 记录到⽇志中(建议值为 true)
/
/ dataSource.setLogAbandoned(true);
// 连接属性。⽐如设置⼀些连接池统计⽅⾯的配置 Sql=true;druid.stat.slowSqlMillis=5000
// dataSource.setConnectProperties();
// 防御 SQL 注⼊
WallFilter wallFilter = new WallFilter();
WallConfig config = new WallConfig();
// 是否允许执⾏ DELETE 语句(建议值为 false)
config.setDeleteAllow(false);
// 是否允许删除表(建议值为 false)
config.setDropTableAllow(false);
wallFilter.setConfig(config);
// 插件代理
List<Filter> proxyFilters = new ArrayList<>(10);
proxyFilters.add(wallFilter);
dataSource.setProxyFilters(proxyFilters);
} catch (SQLException e) {
<(e.toString());
}
return dataSource;
}
@Bean
druid连接池配置详解public ServletRegistrationBean<StatViewServlet> statViewServlet() {
/
/ 监控信息显⽰页⾯
StatViewServlet statViewServlet = new StatViewServlet();
// 访问监控信息显⽰页⾯的 url 路径(建议值为 /druid/* )
String urlPattern = "/druid/*";
ServletRegistrationBean<StatViewServlet> bean =
中的 coo
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论