数据库链接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤其突出。对数据库链接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库链接池正是针对这个问题提出来的。数据库链接池负责分配、管理和释放数据库链接,它容许应用程序重复使用一个现有的数据库链接,而不是再从新创建一个;释放空闲时间超过最大空闲时间的数据库链接来避免由于没有释放数据库链接而引发的数据库链接遗漏。这项技术能明显提升对数据库操做的性能。css
Druid:/ˈdruːɪd
a priest of an ancient Celtic religion 德鲁伊特(古代凯尔特人的祭司)html
Druid wiki 介绍挺全面的,有中文教程,常见问题的Wiki总结也挺全。mysql
Druid链接池是阿里巴巴开源的数据库链接池项目。Druid链接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为git
Druid 实用的功能:github
怎么配置数据库链接池?web
你能够在程序中直接调用DruidDataSource,也能够使用Spring配置,或者使用JNDI配置。spring
配置 Druid 链接池方式主要有两种:sql
DruidDataSource
类 和监控druid-spring-boot-starter
包, 修改对应环境配置文件便可,本文采用的这种方式,Github 上有次对应的指导:Druid Spring Boot Starter-中文<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.13</version> </dependency>
filters: stat,wall,log4j数据库
修改对应环境的配置文件,添加 druid 的支持json
mybatis.type-aliases-package==com.michael.mybatisdemo spring.datasource.url=jdbc:mysql://192.168.3.43:3306/beta?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true spring.datasource.username=cicd spring.datasource.password=Home123* spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver server.port=8089 swagger.enable=true # druid链接池配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver # 初始化大小,最小,最大 spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=100 spring.datasource.druid.min-idle=5 # 链接超时配置 spring.datasource.druid.max-wait=60000 spring.datasource.druid.pool-prepared-statements=true spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 spring.datasource.druid.validation-query=SELECT 1 FROM DUAL spring.datasource.druid.validation-query-timeout=60000 spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-on-return=false spring.datasource.druid.test-while-idle=true # 多久进行检测一次空闲的链接,单位毫秒 spring.datasource.druid.time-between-eviction-runs-millis=60000 # 链接最小生存时间 spring.datasource.druid.min-evictable-idle-time-millis=100000 # druid配置监控统计拦截的filters,去掉后监控界面sql没法统计,'wall'用于防火墙 spring.datasource.druid.filters=config,wall,stat # WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.web-stat-filter.url-pattern=/* spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置 spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* spring.datasource.druid.stat-view-servlet.reset-enable=false spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin123 spring.datasource.druid.stat-view-servlet.allow=127.0.0.1 spring.datasource.druid.stat-view-servlet.deny=192.168.32.139 # druid配置 Filter # 配置StatFilter spring.datasource.druid.filter.stat.db-type=mysql spring.datasource.druid.filter.stat.log-slow-sql=true # 配置监控拦截,慢sql,10秒,而且经过日志输出执行慢的SQL spring.datasource.druid.filter.stat.slow-sql-millis=5000 # 配置WallFilter spring.datasource.druid.filter.wall.enabled=true spring.datasource.druid.filter.wall.db-type=mysql spring.datasource.druid.filter.wall.config.delete-allow=false spring.datasource.druid.filter.wall.config.drop-table-allow=false
127.0.0.1:8080/druid/login.html
, 进入 druid
登录界面,以下图,输入在配置类 DruidConfiguration
中配置的用户名和密码,进入监控界面
咱们已经成功的访问到了监控首页,能够看到大体包含了以下几个模块:数据源、SQL监控、SQL防火墙、Web应用、URI监控、Session监控、JSONAPI等。
能够看到项目中管理的全部数据源配置的详细状况,除了密码没有显示外其余都在。
能够查看全部的执行sql语句
druid提供了黑白名单的访问,能够清楚的看到sql防御状况。
能够看到目前运行的web程序的详细信息。
能够监控到全部的请求路径的请求次数、请求时间等其余参数。
能够看到当前的session情况,建立时间、最后活跃时间、请求次数、请求时间等详细参数。
经过api的形式访问Druid的监控接口,api接口返回Json形式数据。