小工具知识网

当前位置: 首页 > 行业知识 > SpringBoot+Druid并开启监控页面

行业知识

SpringBoot+Druid并开启监控页面

2026-11-11 11:18:09 来源:互联网转载

介绍

  Druid 是一个开源的数据库连接池项目,由阿里巴巴集团开发并贡献给开源社区。它在Java领域中以其高性能、强大功能和易用性著称,是Java应用中广泛使用的数据库连接池组件之一。

Druid 的主要特点包括:

  高性能与低延迟: Druid 实现了高效的数据库连接管理,支持快速获取和释放数据库连接,从而提升系统性能。

  监控与统计:内建强大的监控功能,能够实时统计SQL执行情况、连接使用状况等信息,方便开发者优化SQL语句和数据库配置,并且可以与各种监控系统集成。

  扩展性:支持SQL解析与拦截,允许自定义插件来增强功能,比如SQL黑名单、白名单过滤,防止SQL注入攻击,以及慢查询日志记录等。

  资源控制:提供了完善的连接池配置选项,如连接数限制、超时时间设置、空闲连接检测与回收机制等,有助于更好地管理和控制数据库资源。

  标准接口实现:Druid 实现了JDBC的标准接口 javax.sql.DataSource,因此可以在任何兼容JDBC的应用程序中轻松替换传统的数据库连接方式。

  并发与线程安全:设计上充分考虑了高并发环境下的性能与稳定性,保证多线程环境下数据库连接的安全使用。

尽管在实际测试中,其他如HikariCP等连接池在某些场景下可能表现更优,但 Druid 由于其全面的功能集和良好的社区支持,在生产环境中仍被广泛应用。

  我记得Springboot2.0以上版本默认集成的是Hikari。Druid已经被阿里弃用了。

为什么写?

  因为网上资料一大把,但是我用了几个发现并不能打开druid的监控页面,而且很多一大串配置根本没有生效,或者说根本就不是这样的。(当然我也没完全理解到全部内容)

1、引入POM

                com.alibaba        druid-spring-boot-starter        1.2.12    

2、yaml文件配置

server:  port: 8099spring:  datasource:    druid:      url: 数据库连接地址      username: 数据库账号      password: 数据库密码      driver-class-name: com.mysql.cj.jdbc.Driver      # 初始化物理链接的个数      initial-size: 5      # 最大连接池数量      max-active: 30      # 最小 连接池数量      min-idle: 5      # 获取连接时最大等待时间,单位毫秒 timeout链接超时      max-wait: 60000      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒  检测非核心链接的时间      #既作为检测的间隔时间又作为testWhileIdel执行的依据      time-between-eviction-runs-millis: 60000      # 连接保持空闲而不被驱逐的最小时间      min-evictable-idle-time-millis: 30000      # 用来检测连接是否有效的sql,要求是一个查询语句  8小时问题 8个小时没跟mysql通信mysql会主动关闭该链接      validation-query: SELECT 1 FROM DUAL      # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,      # 如果空闲时间大于min-evictable-idle-time-millis,执行validationQuery检测连接是否有效。      test-while-idle: true      # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。      test-on-borrow: false      # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。      test-on-return: false      # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,      # 比如说oracle。在mysql下建议关闭。不是mysql端,链接端,select * from student 查询缓存      pool-prepared-statements: true      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。      max-pool-prepared-statement-per-connection-size: 50      #调优相关:基本上任何一个项目的性能瓶颈 1.io 2.cpu计算量      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计      filters: stat,wall      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录  慢查询:增删改查      connection-properties: druid.stat.mergeSql=true;      filter:        stat:          slow-sql-millis: 1      # 合并多个DruidDataSource的监控数据      use-global-data-source-stat: true#      # druid连接池监控#      stat-View-Servlet:#        login-username: admin#        login-password: 1101165230      # 排除一些静态资源,以提高效率      web-stat-filter:        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

3、创建配置类

/** * @author by Guoshun * @version 1.0.0 * @description druid * @date 2024/2/4 17:15 */@Configuration//放入容器中public class DruidConfig {// //    @Bean//    //绑定配置文件前缀为spring.datasource//    @ConfigurationProperties(prefix = "spring.datasource.druid")//    public DataSource druidDataSource(){//        return new DruidDataSource();//    }    /**     * 返回后台监控servlet     */    @Bean    public ServletRegistrationBean monitor(){        //请求        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");        //后台需要用户登录,账号密码配置        HashMap initParameters = new HashMap();        //增加配置        //登录key是固定的loginUsername loginPassword        //TODO 这里改成你需要的用户名和密码        initParameters.put("loginUsername","admin");        initParameters.put("loginPassword","1101165230");        //访问白名单//        initParameters.put("allow","ip地址");        bean.setInitParameters(initParameters);//设置初始化参数        return bean;    }    /**     * filter     * @return     */    @Bean    public FilterRegistrationBean webStatFilter(){        FilterRegistrationBean filterBean = new FilterRegistrationBean();        filterBean.setFilter(new WebStatFilter());        //可以过滤那些请求        Map initParameters = new HashMap();        //不统计这些东西        initParameters.put("exclusions","*.js,*.css,/druid/*");        filterBean.setInitParameters(initParameters);        return filterBean;    }}

启动项目输入地址:http://ip:port/druid/login.html

上一篇:远程服务器怎么传回数据?

下一篇:王者荣耀台服探秘,游戏特色与体验深度解析