博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
druid之配置
阅读量:7170 次
发布时间:2019-06-29

本文共 5222 字,大约阅读时间需要 17 分钟。

hot3.png

1. 配置

连接池参考配置:

通常来说,只需要修改initialSize、minIdle、maxActive。

 

配置说明

配置 缺省值 说明
name   配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。 
如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)
jdbcUrl   连接数据库的url,不同数据库不一样。例如: 
mysql : jdbc:mysql://10.20.153.104:3306/druid2 
oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
username   连接数据库的用户名
password   连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName(建议配置下)
initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
maxActive 8 最大连接池数量
maxIdle 8 已经不再使用,配置了也没效果
minIdle   最小连接池数量
maxWait   获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedStatements false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
maxOpenPreparedStatements -1 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
validationQuery   用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
testOnBorrow true 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnReturn false 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testWhileIdle false 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
timeBetweenEvictionRunsMillis   有两个含义: 
1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
numTestsPerEvictionRun   不再使用,一个DruidDataSource只支持一个EvictionRun
minEvictableIdleTimeMillis    
connectionInitSqls   物理连接初始化的时候执行的sql
exceptionSorter 根据dbType自动识别 当数据库抛出一些不可恢复的异常时,抛弃连接
filters   属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 
监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
proxyFilters  

类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系

 

配置考虑   

       1:初始化连接:可考虑设置为3个连接 。对于db规模特别大的情况下可考虑设置为1个。避免启动时间过长;

       2:最小连接:可考虑该值的设置和初始化连接保持一致;

       3:最大连接:对于有较大DB规模,最大连接不要设置过大,避免本地维护的db太大。 如果对应到数据源的并发数过高,可考虑增大最大连接数。

       4:获取连接的超时时间:如果连接全部被占用,需要等待的时间。可以根据当前系统的响应时间判定,如果容忍度较高,可以大点。容忍度较低,设置小点。

       5:当获取连接和释放连接心跳检测:建议全部关闭,否则每个数据库访问指令会对数据库生产额外的两条心跳检测的指令,增加数据库的负载。连接有效性的检查改用后台空闲连接检查。

       6:连接有效性检测时间:该值需要结合数据库的wait_timeout,interactive_timeout值进行设置。假如数据库为120s,则心跳检测时间在120s以内越大越好。如果太小,心跳检测时间会比较频繁。建议设置为90s。

       7:最大空闲时间:如果连接超过该时间没有使用过,则会进行close掉。 该值不要太小,避免频繁的建立连接关闭连接。也不要太大,导致一直无法关闭。

       8:心跳检查的sql语句:尽量使用ping命令,ping的性能较查询语句高。大部分的数据库连接池不配置query语句,便会调用ping命令。

       9:prepareStatement缓存:可以根据自己的业务来判定是否开启。开启后对性能的影响依赖于具体业务和并发情况。可考虑暂时不开启。

       10:连接使用超时:业务拿到一个连接,如果超过指定的时间未归还,是否把该连接给给回收掉。超时时间等和具体的业务关联。暂时建议先不开启。

 

2. 配置统计过滤器

druid内置过滤器别名

druid.filters.default=com.alibaba.druid.filter.stat.StatFilterdruid.filters.stat=com.alibaba.druid.filter.stat.StatFilterdruid.filters.mergeStat=com.alibaba.druid.filter.stat.MergeStatFilterdruid.filters.counter=com.alibaba.druid.filter.stat.StatFilterdruid.filters.encoding=com.alibaba.druid.filter.encoding.EncodingConvertFilterdruid.filters.log4j=com.alibaba.druid.filter.logging.Log4jFilterdruid.filters.log4j2=com.alibaba.druid.filter.logging.Log4j2Filterdruid.filters.slf4j=com.alibaba.druid.filter.logging.Slf4jLogFilterdruid.filters.commonlogging=com.alibaba.druid.filter.logging.CommonsLogFilterdruid.filters.commonLogging=com.alibaba.druid.filter.logging.CommonsLogFilterdruid.filters.wall=com.alibaba.druid.wall.WallFilterdruid.filters.config=com.alibaba.druid.filter.config.ConfigFilter

spring配置文件中,配置sql统计过滤器

 

3. 配置统计页面

配置druid监控模块

在web.xml中配置servlet,可以通过例如 http://localhost:8081/druid 访问监控主页

DruidStatView
com.alibaba.druid.support.http.StatViewServlet
resetEnable
true
loginUsername
admin
loginPassword
123456
DruidStatView
/druid/*

从监控页面中可以看到数据源、sql执行的一些情况

 

配置web统计

如果需要对web应用以及URL的统计,可以配置该项

web.xml中配置

DruidWebStatFilter
com.alibaba.druid.support.http.WebStatFilter
exclusions
*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
DruidWebStatFilter
/*

 

页面

 

配置spring统计

如果需要对某个service/dao进行统计,配置此项

在spring配置文件中

页面

 

慢SQL日志记录

参考:http://uuider.iteye.com/blog/2109507

转载于:https://my.oschina.net/thinwonton/blog/979184

你可能感兴趣的文章
android应用程序fps meter[帧数显示]的分析 —— 浅谈root的风险 (1)
查看>>
技术人生:我为什么要坚持写博客
查看>>
Unable to start T-SQL Debugging. Could not connect to the computer ‘.’
查看>>
Windows蓝屏dump文件查看器(转)
查看>>
Java多线程-线程的同步(同步代码块)
查看>>
nyoj322 sort 归并排序,树状数组
查看>>
leetcode -- Partition List
查看>>
timerTask任务定时器
查看>>
leetcode -- Triangle
查看>>
【转载】给VM虚拟机增加硬盘容量
查看>>
中断描述符表(Interrupt Descriptor Table,IDT)
查看>>
机器学习
查看>>
.NET:异常处理的两条“黄金定律”,求批!
查看>>
二叉树的深度
查看>>
android:screenOrientation的说明
查看>>
ubuntu安装日志
查看>>
XMLHTTP使用具体解释
查看>>
FindWindowEx用法
查看>>
Parallel的陷阱
查看>>
asp.net C# int 类型在32/64位环境下取值范围无变化
查看>>