配色: 字号:
Druid简单使用配置及其介绍
2017-03-24 | 阅:  转:  |  分享 
  
Druid简单使用配置及介绍惠买集团Guanping.LiDruid介绍Druid介绍Druid是阿里
巴巴的温少(温绍锦)团队开发的。Druid是什么?druid凭借其出色的性能成为一名数据库连接池的后起之秀.
Druid首先是一个数据库连接池(DruidDataSource),它还包含一个ProxyDriver(Filter-C
hain模式驱动代理),一系列内置的JDBC组件库,一个SQLParser(解析)。一、强大的监控特性:通过
Druid提供的监控功能,可以清楚知道连接池和SQL的工作情况。1、监控SQL的执行时间、ResultSet持有时间、返回行
数、更新行数、错误次数、错误堆栈信息。2、SQL执行的耗时区间分布。什么是耗时区间分布呢?比如说,某个SQL执行了10
00次,其中0~1毫秒区间50次,1~10毫秒800次,10~100毫秒100次,100~1000毫秒30次,1~10秒15次,1
0秒以上5次。通过耗时区间分布,能够非常清楚知道SQL的执行耗时情况。3、监控连接池的物理连接创建和销毁次数、逻辑
连接的申请和关闭次数、非空等待次数、PSCache命中率等。二、方便扩展:Druid提供了Filter-Chain模式的扩
展API,可以自己编写Filter拦截JDBC中的任何方法,可以在上面做任何事情,比如说性能监控、SQL审计、用户名密码加密、日志
等等。Druid内置提供了用于监控的StatFilter、日志输出的Log系列Filter、防御SQL注入攻击的W
allFilter。另外还有用于数据库密码加密的CirceFilter,以及和Web、Spring关联监控的DragoonStat
Filter。Guanping.LiDruid介绍三、优秀特性:1、ExceptionSorter。当一个连接产生
不可恢复的异常时,例如Oracleerror_code_28sessionhasbeenkilled,必须立刻从连接池中
逐出,否则会产生大量错误.目前只有Druid和JBossDataSource实现了ExceptionSorter.2、
PSCache内存占用优化对于支持游标的数据库(Oracle、SQLServer、DB2等,不包括MySql),PSCache可
以大幅度提升SQL执行性能。一个PreparedStatement对应服务器一个游标,如果PreparedStatement被缓存
起来重复执行,PreparedStatement没有被关闭,服务器端的游标就不会被关闭,性能提高非常显著。在类似“SELECT
FROMTWHEREID=?”这样的场景,性能可能是一个数量级的提升。但在OracleJDBCDriver中,其他
的数据库连接池(DBCP、JBossDataSource)会占用内存过多,极端情况可能大于1G。Druid调用OracleDriv
er提供管理PSCache内部API。3、LRU(LeastRecentlyUsed最近最少使用)是一个性能关键指标
,特别Oracle,每个Connection对应数据库端的一个进程,如果数据库连接池遵从LRU,有助于数据库服务器优化,这是重要的
指标。Druid、DBCP、Proxool、JBoss是遵守LRU的。BoneCP、C3P0则不是。BoneCP在mock环境下性
能可能还好,但在真实环境中则就不好了。四、Maven中druid的Jar包引用:(pom.xml)在Maven中引用d
ruid比较新的Jar包,在我的环境中导入了druid源码,项目则可引用源码项目druidMaster
com.alibabadruidrtifactId>1.0.24
在JavaB
uildPath-->Projects-->druidMasterGuanping.LiDruid配置DruidDat
aSource数据源Guanping.LiDruid配置主要有以下几项:配置_DruidDataSource数据源
-----1、配置数据源配置_StatFilter-----2、
Druid的内置监控功能:打开Druid的监控统计功能配置_StatViewServlet
-----3、展示Druid的统计信息,显示监控信息配置_WebStatFilter
-----4、?(配置allow和deny),对以上显示的监控信息做访问控制配置_Druid和Spring关联监控
-----5、关联Spring监控信息拦截显示配置_使用ConfigFilter
-----6、为数据库密码提供加密功能和读取文件配置1、配置_DruidDataSource数据源:以下是一个参考的连接
池配置:(context-datasource-jdbc.xml)lass="com.alibaba.druid.pool.DruidDataSource"init-method="
init"destroy-method="close">Name">#{conf[''com.driver'']}opertyname="url">#{conf[''com.url'']}
#{conf[''com.user'']}>#{conf[''com
.passwd'']}
Druid配置
ue="30">

value="5000">
000"/>oveAbandoned"value="true"/>

validationQuery"value="select1fromdual"/>Druid配置DruidDataSou
rce数据源Guanping.LiGuanping.Lialue="false">lue="false"/>alue="true"/>
rtyname="timeBetweenEvictionRunsMillis"value="180000"/>opertyname="poolPreparedStatements"value="true"/>ropertyname="maxPoolPreparedStatementPerConnectionSize"value="2
0"/>2、配置_StatFilter:Druid的监控统计功能是通过filter-chain扩展实现
(spring/service/context-datasource-jdbc.xml)<
!--使用Druid的内置监控功能:打开Druid的监控统计功能-->/>id.stat.slowSqlMillis=300000"/>配置_StatFilterGuanping.L
i
y>配置_StatFilterGuanping.Li--也可以通过connectProperties属性来打开mergeSql功能,或者通过增加JVM的参数配
置:-Ddruid.stat.mergeSql=truerties"value="druid.stat.mergeSql=true"/>-->obalDataSourceStat"value="true"/>s="com.alibaba.druid.filter.stat.StatFilter">="slowSqlMillis"value="30000"/>"value="true"/>其中:
DruidWebStatFilterlass>com.alibaba.druid.support.http.WebStatFilter
exclusionsm-name>.js,.gif,.jpg,.png,.css,
.ico,/druid/
-param>sessionStatMaxCount
1000

sessionStatEnable
true

Guanping.Li
principalSessionName
802720.user


principalCookieNamearam-value>admin.user

profileEnable
aram-name>trueinit-param>
DruidWebStatFilter
/
配置
_StatViewServlet配置_WebStatFilterGuanping.Li4、配置_WebStatFilter:
?(配置allow和deny)(web.xml)StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部
情况,如果你需要做访问控制,可以配置allow和deny这两个参数。判断规则:deny优先于allow,如果在deny列表中,就算
在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问。比如:<
servlet-name>DruidStatViews>com.alibaba.druid.support.http.StatViewServlet
aram-name>resetEnabletrue<
/param-value>

loginUsernamename>druidit-param>配置_WebStatFilterram>loginPassword
druid

allow
10.9.12.117/24,128.242.128.1
m-name>deny10.9.12.117param-value>
et-mapping>DruidStatView
/druid/ping>Guanping.Li配置_Druid和Spring关联监控Guanping.Li5、配置_Druid和Spri
ng关联监控(spring/service/context-component-scan.xml)Druid提供了Spring
和Jdbc的关联监控:com.alibaba.druid.support.spring.stat.DruidStatInterce
ptor是一个标准的SpringMethodInterceptor。可以灵活进行AOP配置。ibaba.druid.support.spring.stat.DruidStatInterceptor">--
DruidStatInterceptor实现了org.aopalliance.intercept.MethodIntercept
or和Spring的org.springframework.beans.factory.InitializingBean和org.
springframework.beans.factory.DisposableBean接口uid.support.spring.stat.BeanTypeAutoProxyCreator">e"value="com.gsshop.biz.prd.service.ProductService"/><
propertyname="interceptorNames">
druid-stat-interceptor

Guanping.Li配置_Druid和Spring关联监控Guanping.LifailureHandleruserDetailsServicedruid-stat-interceptor6、配置_使用ConfigFilter参考文档“使用ConfigFilter”。配置_Druid和Spring关联监控
献花(0)
+1
(本文系关平个人图...首藏)