阿⾥巴巴(alibaba)系列_druid数据库连接池_监控(⼀篇搞
定)记录执⾏慢的sql。。。
Druid数据连接池简介
Druid是Java语⾔中最好的数据库连接池。Druid能够提供强⼤的监控和扩展功能。
性能好,同时⾃带监控页⾯,可以实时监控应⽤的连接池情况以及其中性能差的sql,⽅便我们出应⽤中连接池⽅⾯的问题。
Druid是⼀个JDBC组件,它包括三部分:
DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系
DruidDataSource ⾼效可管理的数据库连接池
SQLParser
Druid可以做什么
可以监控数据库访问性能,Druid内置提供了⼀个功能强⼤的StatFilter插件,能够详细统计SQL的执⾏性能,这对于线上分析数据库访问性能有帮助。
替换DBCP和C3P0。Druid提供了⼀个⾼效、功能强⼤、可扩展性好的数据库连接池。
数据库密码加密。直接把数据库密码写在配置⽂件中,这是不好的⾏为,容易导致安全问题。DruidDruiver和DruidDataSource都⽀持PasswordCallback。
SQL执⾏⽇志,Druid提供了不同的LogFilter,能够⽀持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的
LogFilter,监控你应⽤的数据库访问情况。
druid监控
Druid已经在阿⾥巴巴部署了超过600个应⽤,经过⼀年多⽣产环境⼤规模部署的严苛考验。
1、下载druid包
Maven配置:
<!-- 阿⾥druid 数据源 start -->
<!-- mvnrepository/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- mvnrepository/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- 阿⾥druid 数据源 end -->
最新版druid 引⽤了slf4j 所以需要⼀并加⼊,否则会报不到slf4的错误。
2、l 引⼊配置⽂件数据库连接相关信息
<!-- 引⼊配置⽂件 -->
<bean id="propertyConfigurer"
class="org.springframework.fig.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/>
</bean>
jdbc.properties 中配置数据库链接信息:
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.110.3.17:1521:实例名
jdbc.username=user
jdbc.password=password
3、l数据源的配置:
<!-- 阿⾥druid 数据源 dataSource start -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 配置初始化⼤⼩、最⼩、最⼤ -->
<property name="initialSize" value="10"/>
<property name="minIdle" value="10"/>
<property name="maxActive" value="50"/>
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="10000"/>
<!-- 配置间隔多久才进⾏⼀次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<!-- 配置⼀个连接在池中最⼩⽣存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="testWhileIdle" value="true"/>
<!-- 这⾥建议配置为TRUE,防⽌取到的连接不可⽤ -->
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="false"/>
<!-- 打开PSCache,并且指定每个连接上PSCache的⼤⼩ -->
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize"
value="20"/>
<!-- 这⾥配置提交⽅式,默认就是TRUE,可以不⽤配置 -->
<property name="defaultAutoCommit" value="true"/>
<!-- 验证连接有效与否的SQL,不同的数据配置不同 mysql:select 1 ;oracle : select 1 from dual --> <property name="validationQuery" value="select 1 from dual"/>
<property name="filters" value="wall,stat"/>
<property name="proxyFilters">
<list>
<ref bean="logFilter"/>
<ref bean="stat-filter"/>
</list>
</property>
</bean>
<!-- 慢SQL记录 -->
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
<!-- 慢sql时间设置,即执⾏时间⼤于50毫秒的都是慢sql -->
<property name="slowSqlMillis" value="50"/>
<property name="logSlowSql" value="true"/>
</bean>
<bean id="logFilter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">
<property name="dataSourceLogEnabled" value="true"/>
<property name="statementExecutableSqlLogEnable" value="true"/>
</bean>
<!-- 阿⾥druid 数据源 dataSource end -->
4、l中加⼊监控配置: 只需要在l中做⼀下简单的Servlet配置即可。
<!--连接池启⽤Web监控统计功能start -->
<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> <init-param>
<!-- 不允许清空统计数据 -->
<param-name>resetEnable</param-name>
<param-value>false</param-value>
</init-param>
druid连接池配置详解<init-param>
<!-- ⽤户名 -->
<param-name>loginUsername</param-name>
<param-value>yourname</param-value>
</init-param>
<init-param>
<!-- 密码 -->
<param-name>loginPassword</param-name>
<param-value>yourpassword</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<!--连接池启⽤Web监控统计功能end-->
输⼊在l中配置的账号和密码即可进⼊监控后台,注意,配置的账号和密码是明⽂,你在这⾥配置什么就是什么,并没有经过加密。
OK,我们看到系统的⼀些简述信息,当然,你也应该看到启动时间了.
接下来是⽐较重要的⼀个页⾯,SQL监控
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论