Druid安装指南
- 1. druid简介
- 1.1数据库连接池
- 2. 安装前的环境准备
- 3. 安装步骤
- 3.1 引入maven依赖
- 3.1 编写配置文件
- 3.3 启动Druid Monitor
- 4. druid使用指南
- 4.1 数据源
- 4.2 SQL监控
- 4.3 SQL防火墙
- 4.4 web应用
- 4.5 URI监控
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等),德鲁伊侧重的是和数据库连接产生的数据,可以结合多个监控的数据一起参考。