首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Druid 连接池的核心优势是什么?如何配置 Druid 的监控功能?

Druid 连接池的核心优势是什么?如何配置 Druid 的监控功能?

原创
作者头像
小焱
发布2025-10-28 09:01:30
发布2025-10-28 09:01:30
2130
举报

一、Druid 连接池的核心优势

Druid 作为阿里开源的数据库连接池,核心优势体现在功能全面性、性能稳定性和生产级特性上,具体包括:

  1. 强大的监控能力undefined内置完善的监控系统,可实时监控连接池状态(活跃连接数、空闲数等)、SQL 执行情况(执行时间、行数、慢 SQL 等)、Web 请求与数据库的交互关系,便于排查性能瓶颈和优化 SQL。
  2. 丰富的扩展功能undefined集成了多种实用功能,如:
    • SQL 防注入(通过 WallFilter 拦截危险语句,如 DROP TABLEDELETE without WHERE 等);
    • 数据库密码加密(避免配置文件中明文存储密码);
    • 日志记录(支持记录 SQL 执行日志、连接获取/归还日志);
    • 连接泄露检测(自动识别未关闭的连接并报警)。
  3. 优秀的性能与稳定性undefined性能接近 HikariCP,在高并发场景下表现稳定,同时通过优化连接复用机制、空闲连接回收策略,减少资源浪费。
  4. 良好的兼容性undefined支持所有主流数据库(MySQL、Oracle、SQL Server 等),兼容 JDK 6+ 和各种框架(Spring、MyBatis 等),适合新旧系统迁移。
  5. 活跃的社区支持undefined作为阿里维护的开源项目,更新迭代及时,Bug 修复响应快,文档丰富,国内企业使用广泛,问题解决方案易获取。

二、如何配置 Druid 的监控功能

Druid 的监控功能通过内置的 StatViewServlet(监控页面)和 WebStatFilter(采集 Web 请求数据)实现,配置步骤如下(以 Spring Boot 为例):

1. 基础配置(application.yml)

在配置文件中添加监控相关参数,与连接池参数一起配置:

代码语言:yaml
复制
spring:
  datasource:
    druid:
      # 连接池基础参数(省略,参考前文)
      # ...

      # 1. 配置监控页面(StatViewServlet)
      stat-view-servlet:
        enabled: true  # 开启监控页面
        url-pattern: /druid/*  # 监控页面访问路径(默认即可)
        login-username: admin  # 登录监控页面的用户名(自定义)
        login-password: 123456  # 登录密码(自定义)
        reset-enable: false  # 禁止重置监控数据(避免误操作)
        allow: 127.0.0.1  # 允许访问监控页面的IP(默认全部允许)
        deny: 192.168.1.100  # 禁止访问的IP(优先级高于allow)

      # 2. 配置Web监控过滤器(WebStatFilter)
      web-stat-filter:
        enabled: true  # 开启Web监控
        url-pattern: /*  # 监控所有请求
        exclusions: "*.js,*.css,*.jpg,/druid/*"  # 排除静态资源和监控页面自身
        session-stat-enable: true  # 开启会话监控
        session-stat-max-count: 100  # 最多记录100个会话

      # 3. 配置SQL监控(StatFilter)
      filter:
        stat:
          enabled: true  # 开启SQL执行监控
          db-type: mysql  # 数据库类型
          log-slow-sql: true  # 记录慢SQL
          slow-sql-millis: 1000  # 慢SQL阈值(毫秒,超过此值记录)
2. 访问监控页面

启动 Spring Boot 项目后,通过 http://localhost:8080/druid 访问监控页面(端口号与项目一致),输入配置的 login-usernamelogin-password 登录。

监控页面包含多个功能模块:

  • 数据源:查看连接池状态(初始化连接数、活跃数、最大数等);
  • SQL监控:统计所有 SQL 的执行次数、耗时、平均时间等,支持按 SQL 语句或表名筛选;
  • SQL防火墙:展示被 WallFilter 拦截的危险 SQL;
  • Web应用:监控 Web 请求与数据库操作的关联关系;
  • 会话监控:查看当前活跃会话及操作记录。
3. 进阶配置(自定义监控过滤规则)

若需更精细的监控(如只监控特定 URL 或排除某些 SQL),可通过 Java 代码自定义过滤器:

代码语言:java
复制
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DruidMonitorConfig {

    // 自定义Web监控过滤器
    @Bean
    public FilterRegistrationBean<WebStatFilter> webStatFilter() {
        FilterRegistrationBean<WebStatFilter> filterBean = new FilterRegistrationBean<>();
        filterBean.setFilter(new WebStatFilter());
        // 监控所有请求
        filterBean.addUrlPatterns("/*");
        // 排除不需要监控的路径(如静态资源)
        filterBean.addInitParameter("exclusions", "*.js,*.css,/druid/*,/api/public/*");
        return filterBean;
    }

    // 自定义SQL监控过滤器(如调整慢SQL阈值)
    @Bean
    public StatFilter statFilter() {
        StatFilter statFilter = new StatFilter();
        statFilter.setLogSlowSql(true);
        statFilter.setSlowSqlMillis(500); // 慢SQL阈值设为500毫秒
        statFilter.setMergeSql(true); // 合并相同SQL(如参数不同的同一语句)
        return statFilter;
    }
}

总结

Druid 的核心优势在于监控能力、扩展功能和生产级稳定性,尤其适合需要精细化管理数据库连接和排查 SQL 问题的场景。配置监控功能只需在 application.yml 中开启 stat-view-servletweb-stat-filter,并通过登录监控页面即可直观查看各项指标,极大提升了系统的可观测性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Druid 连接池的核心优势
  • 二、如何配置 Druid 的监控功能
    • 1. 基础配置(application.yml)
    • 2. 访问监控页面
    • 3. 进阶配置(自定义监控过滤规则)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档