目录

  • 1. DruidDataSource配置说明
  • 2. maven配置
  • 3. 如果打开Druid的监控统计功能
  • 4. 怎样使用Druid的内置监控页面
  • 5. 防止sql注入配置
  • 6. 参考通用配置
  • 7. 连接泄漏监测
  • 8. 日志记录慢sql
  • 9. 如何加密数据库密码
  • 10. DruidDataSource支持哪些数据库?
  • 11. 如何在Spring Boot中集成Druid连接池和监控?
  • 12.如何在Spring Boot中添加自定义WallConfig、Filter ?

参考文档:https://github.com/alibaba/druid

1. DruidDataSource配置说明

  • name: 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:“DataSource-” + System.identityHashCode(this). 另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错
  • url: 连接数据库的url,不同数据库不一样。例如:mysql : jdbc:mysql://10.20.153.104:3306/druid2
    oracle: jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
  • username: 连接数据库的用户名
  • password: 连接数据库的密码。如果不希望密码直接写在配置文件中,可以使用ConfigFilter。其作用包括:从配置文件中读取配置;从远程http文件中读取配置,查看详情配置
  • driverClassName: 默认可根据URL自动识别。这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName。
  • initialSize: 默认值0。初始化时建立物理连接的个数,初始化发生在显示调用init方法,或者第一次getConnection时。
  • maxActive: 默认值8。最大连接池数量。
  • maxIdle: 已经不再使用,配置了也没效果,可忽略。说明:maxIdle是Druid为了方便DBCP用户迁移而增加的,maxIdle是一个混乱的概念。连接池只应该有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle,分别相当于maxPoolSize和minPoolSize。
  • minIdle: 最小连接池数量。
  • maxWait: 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true来使用非公平锁。
  • poolPreparedStatements: 默认值为false。是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
  • maxPoolPreparedStatementPerConnectionSize: 默认值-1。要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100。
  • validationQuery: 用来检测连接是否有效的sql,要求是一个查询语句,常用select ‘X’。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
  • validationQueryTimeout: 单位:秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法。
  • testOnBorrow: 默认值为true。申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
  • testOnReturn: 默认值为false。归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
  • testWhileIdle: 默认值为false。建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
  • keepAlive: 1.0.28版本,默认值为false。连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。
  • timeBetweenEvictionRunsMillis: 1.0.14版本,默认值为1分钟,单位毫秒。有两个含义:一个是Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接;另一个是testWhileIdle的判断依据,详细看testWhileIdle属性的说明。
  • minEvictableIdleTimeMillis: 连接保持空闲而不被驱逐的最小时间,单位毫秒。
  • numTestsPerEvictionRun: 不再使用,一个DruidDataSource只支持一个EvictionRun。
  • connectionInitSqls: 物理连接初始化的时候执行的sql。
  • exceptionSorter: 默认根据dbType自动识别。当数据库抛出一些不可恢复的异常时,抛弃连接。
  • filters: 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat、日志用的filter:log4j、防御sql注入的filter:wall。
  • proxyFilters: 类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系。
  • asyncInit: asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间。
  • maxOpenPreparedStatements: 与maxPoolPreparedStatementPerConnectionSize相同
  • removeAbandoned: 当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了。Druid提供了RemoveAbandanded相关配置,用来关闭长时间不使用的连接。注:配置removeAbandoned对性能会有一些影响,建议怀疑存在泄漏之后再打开。在上面的配置中,如果连接超过30分钟未关闭,就会被强行回收,并且日志记录连接申请时的调用堆栈。
  • removeAbandonedTimeout: 连接超时多长时间关闭,单位秒
  • logAbandoned: 关闭abandoned连接时输出错误日志。

2. maven配置

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid-version}</version>
</dependency>

3. 如果打开Druid的监控统计功能

Druid的监控统计功能是通过filter-chain扩展实现,如果你要打开监控统计功能,配置StatFilter,具体看这里

4. 怎样使用Druid的内置监控页面

内置监控页面是一个Servlet,具体配置看这里

5. 防止sql注入配置

Druid提供了WallFilter,它是基于SQL语义分析来实现防御SQL注入攻击的。具体配置看这里

6. 参考通用配置

DruidDataSource大部分属性都是参考DBCP的,如果你原来就是使用DBCP,迁移是十分方便的。不同业务场景需求不同,以下配置只用来参考:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}" /><property name="username" value="${jdbc_user}" /><property name="password" value="${jdbc_password}" /><property name="filters" value="stat" /><property name="maxActive" value="20" /><property name="initialSize" value="1" /><property name="maxWait" value="60000" /><property name="minIdle" value="1" /><property name="timeBetweenEvictionRunsMillis" value="60000" /><property name="minEvictableIdleTimeMillis" value="300000" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="poolPreparedStatements" value="true" /><property name="maxOpenPreparedStatements" value="20" /><property name="asyncInit" value="true" /></bean>

7. 连接泄漏监测

参考信息
当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了。Druid提供了RemoveAbandanded相关配置,用来关闭长时间不使用的连接。例如:

 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">... ...<property name="removeAbandoned" value="true" /> <!-- 打开removeAbandoned功能 --><property name="removeAbandonedTimeout" value="1800" /> <!-- 1800秒,也就是30分钟 --><property name="logAbandoned" value="true" /> <!-- 关闭abanded连接时输出错误日志 -->... ...</bean>

配置removeAbandoned对性能会有一些影响,建议怀疑存在泄漏之后再打开。在上面的配置中,如果连接超过30分钟未关闭,就会被强行回收,并且日志记录连接申请时的调用堆栈。

内置监控页面查看未关闭连接堆栈信息
当removeAbandoned=true之后,可以在内置监控界面datasource.html中的查看ActiveConnection StackTrace属性的,可以看到未关闭连接的具体堆栈信息,从而方便查出哪些连接泄漏了。

8. 日志记录慢sql

在StatFilter配置中有慢SQL执行日志记录,看这里

9. 如何加密数据库密码

运维和DBA都不希望把密码明文直接写在配置文件中,Druid提供了数据库密码加密的功能。具体看这里

10. DruidDataSource支持哪些数据库?

理论上说,支持所有有jdbc驱动的数据库。实际测试过的有:
mysql 支持,大规模使用
oracle 支持,大规模使用
sqlserver 支持
postgres 支持
db2 支持
h2 支持
derby 支持
sqlite 支持
sybase 支持

11. 如何在Spring Boot中集成Druid连接池和监控?

使用Druid Spring Boot Starter,点击查看

12.如何在Spring Boot中添加自定义WallConfig、Filter ?

点击查看

DruidDataSource配置说明相关推荐

  1. 数据库连接池 (DBCP、c3p0、Druid) 配置说明和对比

    1. 引言 1.1 定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出. 对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据 ...

  2. linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明

    根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...

  3. Angular应用中tsconfig.json文件配置说明及配置全局路径映射

    tsconfig.json文件配置说明 1. tsconfig.json文件中的选项配置 2. 配置全局路径映射 1. tsconfig.json文件中的选项配置 TypeScript编译器配置文件的 ...

  4. ESLint 配置说明

    ESLint 有什么用,为什么要使用? ESLint 是一套可自定义规则的JS代码检查与修复工具 目标是保存团队代码的一致性和避免错误并且修复错误.减少团队沟通成本 "no-alert&qu ...

  5. tuxedo文件ubbconfig配置说明

    tuxedo文件ubbconfig配置说明 1.IPCKEY:Tuxedo使用它标识公告板及其他的IPC资源.它不能与该服务器上其他的IPC资源的ID号冲突,其范围是:32769到262126: 2. ...

  6. 增加 oracle服务名,oracle本地服务名配置说明

    本地oracle客户端连接远程oracle数据库服务器配置说明如下: 1.找到本地oracle客户端安装目录,如:%path%\Oracle 2.再找配置文件tnsnames.ora,其目录为 %pa ...

  7. 很详细的Nginx配置说明

    这篇文章主要为大家分享了一篇很详细的Nginx配置说明,主要内容包括Nginx常用功能.Nginx配置文件结构,想要了解Nginx配置的朋友不要错过,参考一下 Nginx是lgor Sysoev为俄罗 ...

  8. express的app.js的详细配置说明

    express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.下面简单来说说express的安装和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建个 ...

  9. druiddatasource配置_Springboot属性注入 Java配置和Value配置

    今天我们正式进入了SpringBoot入门实战系列的课程,第二个部分SpringBoot配置和日志管理,本期课程将会分享:1.springboot属性注入 - @Value(推荐);2.Springb ...

  10. redhat php5 安装,完整的linux(RedHat)+php5.3.10+mysql5.5.19+apache2.2.22安装配置说明

    完整的linux(RedHat) +php5.3.10+mysql5.5.19+apache2.2.22安装配置说明 1.安装mysql #mysql完整配置 #groupadd mysql #use ...

最新文章

  1. kf真空接头标准尺寸_酒泉VER8314KN39H出口过滤器滤芯 高线真空滤油机介
  2. 【转】排序算法复习(Java实现) (二): 归并排序,堆排序,桶式排序,基数排序...
  3. 3.2 Lucene实战:一个简单的小程序
  4. (Object detection)目标检测从入门到精通——第五部分YOLO 算法
  5. linux中的strip命令简介------给文件脱衣服
  6. Xamarin 打包生成 Android apk 文件
  7. mysql高可用方案之主从同步+MHA高可用
  8. paip.提升用户体验---注册异常记录
  9. 计算机二级栈,计算机二级国考office的高科技玩法之:堆栈的续集
  10. 生产排程遇难题?APS系统来解决
  11. 铁路计算机工程师论文,工程技术类有关论文格式模板,关于铁路工程师职文2016年相关论文范本...
  12. [QUANTAXIS量化分析]滚动复利策略
  13. 基于XC7K325T光纤传输的PCIE光纤卡、2路光纤的资料
  14. 动作频频,BAT欲瓜分10万亿互联网医疗市场蛋糕?
  15. 大学物理复习笔记——量子物理
  16. CSR867x学习笔记:SPP Server and Client
  17. 2019年第十届蓝桥杯C/C++ A组国赛赛后总结(北京旅游总结)
  18. java冷门知识点整理
  19. 为什么说以太坊应该移动化?三星、HTC 等科技巨头相继推出区块链手机对此有何影响?...
  20. Pdf文件打印功能恢复(绿色版)

热门文章

  1. caesar java_Java之Caesar与Vigenere实现
  2. vue自定义封装全局组件与使用
  3. 测试工具Monitor入门
  4. monitor java_Java中的monitor机制
  5. panabit之PPPoE认证
  6. rails 分页插件 Kaminari 的 数组分页
  7. CES2020即将完结!盘点这些脑洞产品,保证你看一眼就被种草
  8. 数据库入口和密码:维普、万方和cnki(转)
  9. STEAM 教育相关书籍
  10. 我知道你在淘宝买过很多东西,但是你买过一所大学吗