Druid数据库连接池内置监控系统配置

一、Druid简介

Druid是阿里巴巴的一个开源数据库连接池,基于Apache 2.0协议,可以免费自由使用。但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。Druid能够提供强大的监控和扩展功能。但Druid只支持JDK 6以上版本,不支持JDK 1.4和JDK 5.0。

二、Druid支持的数据库

Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。

Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。

三、Druid基本配置

Druid的基本配置相信大家基本都会了,可参考我上一篇文章:Druid连接池配置详解及连接池调优_阿里 druid 连接池-CSDN博客

今天我们重点讲一下Druid内置的监控系统是如何配置和使用的。

四、Druid内置监控系统配置

########## 配置数据源 (Druid)##########

spring:

  datasource:

    username: root

    password: 123456

   url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

    driver-class-name: com.mysql.cj.jdbc.Driver

    type: com.alibaba.druid.pool.DruidDataSource

    # 下面为连接池的补充设置,应用到上面所有数据源中

    # 初始化大小,最小,最大

    druid:

      initial-size: 5

      max-active: 20

      min-idle: 5

      time-between-eviction-runs-millis: 60000

      max-wait: 60000

      min-evictable-idle-time-millis: 300000

      validation-query: SELECT 1

      test-while-idle: true

      testOnBorrow: false

      test-on-return: false

      pool-prepared-statements: true

      max-pool-prepared-statement-per-connection-size: 20

      #配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入

      #如果允许时报错 java.lang.ClassNotFoundException:org.apache.log4j.Priority

      #则导入 log4j 依赖即可

      filters: stat,wall,slf4j

      filter:

        stat:

          log-slow-sql: true #慢sql

          slow-sql-millis: 2000 # 设置2秒

          db-type: mysql

        slf4j:

          enabled: true

          statement-log-error-enabled: true

          statement-create-after-log-enabled: false

          statement-close-after-log-enabled: false

          result-set-open-after-log-enabled: false

          result-set-close-after-log-enabled: false

      use-global-data-source-stat: true

      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

      #SQL监控页面配置

      stat-view-servlet:

        enabled: true

        login-username: admin

        login-password: 123456

        allow:

        deny:

        reset-enable: false

        url-pattern: /druid/*

      #web拦截

      web-stat-filter:

        url-pattern: /*

        exclusions: "*.js,*.gif,*.jpg,*.css,/druid/*"

        enabled: true

        session-stat-enable: true       # 开启session统计功能

        session-stat-max-count: 1000    # session的最大个数,默认100

      aop-patterns: com.xin.*.mapper.* #Spring监控开启

配置好以后,重启服务,浏览器访问:http://项目地址:项目端口/项目名称/druid/login.html就会看到如下页面:

输入之前配置中配置好的用户名和密码,即可登录成功。

五、Druid内置监控系统简单介绍

5.1、首页

展示Druid版本、jdk版本、重置次数、启动时间等基本信息。

5.2、数据源

数据源菜单显示数据库连接池的基本信息,如连接地址、连接类型、最大连接数、最小连接数、初始连接等信息。

可通过逻辑连接打开次数、逻辑连接关闭次数来判断系统中是否存在有连接未关闭的情况(正常情况下打开次数和关闭次数应该一致)

5.3、SQL监控(主要)

SQL监控显示系统已执行过的每条SQL语句的执行情况。通过执行数、执行时间、最慢时间、事务中、错误数、最大并发、执行时间分布等统计维度来展现。

需要说明的有:

执行数:本条sql语句已执行的次数

执行时间:本条sql语句累计执行时间(单位:毫秒)

最慢:本条sql语句执行最慢一次的耗时(单位:毫秒)

执行时间分布【- - - - - - - -】:这8个 – 分别代表8个耗时区间的次数,从左至右依次是:

0-1毫秒次数、1-10毫秒次数、10-100毫秒次数、100-1000毫秒次数、1-10秒次数、10-100秒次数、100-1000秒次数、大于1000秒次数。

如下图中的这一条数据:

可以发现:执行时间上本条sql语句有1次是在10-100毫秒内就执行完成,其他耗时区间的执行次数都为0.

执行+RS时分布与此同理。通过耗时区间,可以发现SQL执行的效率情况,可以反映出数据库或应用是否稳定。

5.4、SQL防火墙

SQL防火墙分防御统计、表访问统计、函数调用统计、SQL防御统计-白名单、SQL防御统计-黑名单这几项。

其中若是涉嫌SQL注入的SQL语句将被拦截,出现在SQL防御统计-黑名单中。

5.5、WEB应用

Web应用主要统计本应用的并发、请求、事务提交、事务回滚等信息,另外统计了本应用在各操作系统上、各浏览器上的访问次数。

5.6、URI监控

URI监控统计了应用中各url的访问次数、请求时间、并发数等信息。

5.7、Session监控

Session监控显示应用中session的请求时间、请求次数、最大并发等数据。

5.8、Spring监控

Spring监控显示针对配置中需要监控的各方法的执行数、执行时间、最大并发、读取行数等信息。

  • 45
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Druid是一款开源的Java数据库连接池,它提供了比传统的连接池更多的功能和性能优势。下面是Druid数据库连接池的配置方法: 1. 引入Druid的依赖包,可以使用Maven来管理: ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.22</version> </dependency> ``` 2. 在Spring配置文件中添加Druid的数据源配置: ``` <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123456"/> <property name="initialSize" value="5"/> <property name="maxActive" value="20"/> <property name="minIdle" value="5"/> <property name="maxWait" value="60000"/> <property name="timeBetweenEvictionRunsMillis" value="60000"/> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="validationQuery" value="SELECT 'x'"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <property name="poolPreparedStatements" value="true"/> <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/> </bean> ``` 3. 配置Druid监控和统计功能: ``` <bean id="druidStatInterceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"/> <bean id="druidStatPointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"> <property name="patterns"> <list> <value>com.example.*.service.*</value> </list> </property> </bean> <aop:config> <aop:advisor advice-ref="druidStatInterceptor" pointcut-ref="druidStatPointcut"/> </aop:config> <bean id="druidStatView" class="com.alibaba.druid.support.http.StatViewServlet"/> <bean id="druidStatFilter" class="com.alibaba.druid.support.http.WebStatFilter"> <property name="exclusions" value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"/> </bean> ``` 以上是Druid数据库连接池的配置方法,可以根据实际需求调整其中的参数。通过Druid监控和统计功能,可以方便地查看数据库连接池的状态和性能指标,对于系统的调优和优化也非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

funtyung

你的鼓励将是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值