1. druid简介

  druid是阿里开源的一个数据库连接池的解决方案。它本身还自带一个监控平台,可以查看时时产生的sql、uri等监控数据,可以排查慢sql、慢请求,方便对sql和项目代码进行调优。

1.1数据库连接池

  数据库连接池是一种用于管理和复用数据库连接的技术。在应用程序与数据库之间建立连接是一项开销较大的操作,而连接池的目标是通过预先建立一组数据库连接,然后在应用程序需要时分配和复用这些连接,以减少连接建立和断开的开销,提高数据库访问的效率和性能。
在这里插入图片描述


2. 安装前的环境准备

1、springboot项目

<!--父工程-->
 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.3.12.RELEASE</version>
 </parent>

2、mysql版本:5.7



3. 安装步骤

3.1 引入maven依赖

        <!--druid依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

3.1 编写配置文件

  配置文件放在在这里插入图片描述

spring:
  #数据库连接配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xxx.xxx.xxx:3306/xxxxxx?autoReconnect=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
    username: xxxx
    password: xxxx
    #druid数据源配置
    druid:
      # 初始化连接池大小
      initialSize: 5
      # 最小连接数
      minIdle: 5
      # 最大连接数
      maxActive: 40
      # 获取连接时的最大等待时间
      maxWait: 60000
      #间隔多长时间进行一次检测;
      timeBetweenEvictionRunsMillis: 60000
      #配置一个最小的生存对象的空闲时间 
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1
      testWhileIdle: true
      #申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能
      testOnBorrow: false
      #归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能
      testOnReturn: false
      poolPreparedStatements: true
      #配置监控统计拦截的filters。stat:监控统计、wall:防御sql注入、log4j:日志记录
      filters: stat,log4j
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true
      #执行时间超过3000毫秒的sql会被标记为慢sql
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
      #配置过滤器,过滤掉静态文件
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: /druid/*,*.js,*.css,*.gif,*.jpg,*.bmp,*.png,*.ico
      #配置可视化控制台页面
      stat-view-servlet:
        filter:
          stat:
            merge-sql: false  
        enabled: true
        #访问德鲁伊监控页面的地址
        url-pattern: /druid/*
        #IP白名单 没有配置或者为空 则允许所有访问
        allow: xxx.xxx.xxx
        #IP黑名单 若白名单也存在 则优先使用
        #deny: ip地址
        #禁用重置按钮
        reset-enable: true
        #登录所用的用户名与密码
        login-username: admin
        login-password: 123456

3.3 启动Druid Monitor

  运行项目以后德鲁伊就开始工作了。上面配置文件中配置了访问德鲁伊控制台的地址,打开控制台直接在项目路径后拼接/druid/index.html
在这里插入图片描述



4. druid使用指南

4.1 数据源

   在数据源这里可以看到连接池的情况,包括配置文件中配置的连接数等参数,以及没有配置的一些默认参数。
在这里插入图片描述

   数据源的下半部分可以看到一些时时产生的数据,这些参数都附带了解释,一些重要的数据有:

  • 等待线程数量 :当前等待获取连接的线程数
  • 事务启动数 :事务开始的个数
  • 事务时间分布 :事务运行时间分布,分布区间为[0-10 ms, 10-100 ms, 100-1 s, 1-10 s, 10-100 s, >100 s]
  • 池中连接数峰值 :连接池中数目的峰值
  • 活跃连接数 :当前连接池中活跃连接数
  • 执行数 :所有连接执行的任务数
  • 事务回滚数 :事务失败回滚的次数
  • 连接持有时间分布:连接持有时间分布,分布区间为[0-1 ms, 1-10 ms, 10-100 ms, 100ms-1s, 1-10 s, 10-100 s, 100-1000 s, >1000 s]

在这里插入图片描述

4.2 SQL监控

  我们在配置文件中配置了慢sql的执行时间为3秒钟,这里会将超过3秒钟的sql标红,方便我们一眼就看到。可以从下图看到有两个mansql,并把sql显示了出来,我们可以针对性的进行sql优化。

  执行分布时间一共有8个档位,在上述数据源里已经看到了这8个档位的含义。

  可以看到最大并发数是40,这是因为在配置文件中配置了最大连接数为40,可以根据实际情况调整参数。

在这里插入图片描述

  点击左侧蓝色的sql,可以查看更详细的视图。

在这里插入图片描述



4.3 SQL防火墙

  记录配置文件中配置的黑、白名单的拦截信息,我这里没有配也没有数据。

在这里插入图片描述


4.4 web应用

  可以看到整个项目的运行数据,主要记录的还是和数据库打交道的一些数据。
在这里插入图片描述


4.5 URI监控

  有不少中间件都能实现对于URI的监控(sentinel、skywalking、zipkin等),德鲁伊侧重的是和数据库连接产生的数据,可以结合多个监控的数据一起参考。
在这里插入图片描述

GitHub 加速计划 / druid / druid
27.83 K
8.56 K
下载
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
最近提交(Master分支:3 个月前 )
f060c270 - 8 天前
1613a765 * Improve gaussdb ddl parser * fix temp table 10 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐