zoukankan      html  css  js  c++  java
  • 数据库连接池druid 监控台配置

    这篇文章主要讲druid 监控台的配置及界面使用介绍。

    业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因。

    下面来说明如何在 Spring Boot 中配置使用Druid 监控

    (1)添加maven依赖

          <dependency>
    
                <groupId>com.alibaba</groupId>
    
                <artifactId>druid</artifactId>
    
                <version>1.0.18</version>
    
    </dependency>

    (2)配置数据源相关信息

    # 数据库访问配置
    
    # 主数据源,默认的
    
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
    spring.datasource.driver-class-name=com.MySQL.jdbc.Driver
    
    spring.datasource.url=jdbc:mysql://localhost:3306/test
    
    spring.datasource.username=root
    
    spring.datasource.password=123456


    # 下面为连接池的补充设置,应用到上面所有数据源中

    # 初始化大小,最小,最大

    spring.datasource.initialSize=5

    spring.datasource.minIdle=5

    spring.datasource.maxActive=20

    # 配置获取连接等待超时的时间

    spring.datasource.maxWait=60000

    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

    spring.datasource.timeBetweenEvictionRunsMillis=60000

    # 配置一个连接在池中最小生存的时间,单位是毫秒

    spring.datasource.minEvictableIdleTimeMillis=300000

    spring.datasource.validationQuery=SELECT 1 FROM DUAL

    spring.datasource.testWhileIdle=true

    spring.datasource.testOnBorrow=false

    spring.datasource.testOnReturn=false

    # 打开PSCache,并且指定每个连接上PSCache的大小

    spring.datasource.poolPreparedStatements=true

    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20

    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙

    spring.datasource.filters=stat,wall,log4j

    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录

    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

    # 合并多个DruidDataSource的监控数据

    #spring.datasource.useGlobalDataSourceStat=true

    上面红色标注配置是监控需要的配置信息,黑色字体是连接池初始化需要的配置信息。

    当我们启动项目的时候,我们就会发现初始化时已经使用我们配置的数据源了:

    [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited

    (3)配置监控统计功能

    配置Servlet

    如下是在SpringBoot项目中基于注解的配置,如果是web.xml配置,按规则配置即可。

    package com.sysware.cloud.dts.druid;
    
    import com.alibaba.druid.support.http.StatViewServlet;
    
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.annotation.WebServlet;
    
    /**
     * Created by WenQ on 2019/1/3.
     */
    @WebServlet(urlPatterns="/druid/*",
            initParams={
                    @WebInitParam(name="allow",value=""),// IP白名单(没有配置或者为空,则允许所有访问)
                    @WebInitParam(name="loginUsername",value="admin"),// 用户名
                    @WebInitParam(name="loginPassword",value="123456"),// 密码
                    @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
            })
    public class DruidStatViewServlet extends StatViewServlet {
    }

    配置filter

     1 package com.sysware.cloud.dts.druid;
     2 
     3 import com.alibaba.druid.support.http.WebStatFilter;
     4 
     5 import javax.servlet.annotation.WebFilter;
     6 import javax.servlet.annotation.WebInitParam;
     7 
     8 /**
     9  * Created by WenQ on 2019/1/3.
    10  */
    11 
    12 @WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
    13         initParams={
    14                 @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")//忽略资源
    15         }
    16 )
    17 public class DruidStatFilter extends WebStatFilter {
    18 }

    上面的两个注解一定要注意要被spring扫描到

    springboot注解默认扫描的包是启动类及其子包,可以通过在启动类上添加注解@ServletComponentScan

    然后启动项目后访问 http://{ip}:{port}/druid/index.html 即可查看数据源及SQL统计等。

    (4)配置监控系统方式二:

    以上配置的监控方式是使用了原生的servlet,filter方式,然后通过@ServletComponentScan进行启动扫描包的方式进行处理的,你会发现我们的servlet,filter根本没有任何的编码。

    在这里我们将使用另外一种方式进行处理:使用代码注册Servlet:

    package com.kfit.base.servlet;
    
     
    
    import org.springframework.boot.context.embedded.FilterRegistrationBean;
    
    import org.springframework.boot.context.embedded.ServletRegistrationBean;
    
    import org.springframework.context.annotation.Bean;
    
    import org.springframework.context.annotation.Configuration;
    
     
    
    import com.alibaba.druid.support.http.StatViewServlet;
    
    import com.alibaba.druid.support.http.WebStatFilter;
    
     
    
    /**
    
     * druid 配置.
    
     *
    
     * 这样的方式不需要添加注解:@ServletComponentScan
    
     * @author Administrator
    
     *
    
     */
    
    @Configuration
    
    publicclass DruidConfiguration {
    
       
    
        /**
    
         * 注册一个StatViewServlet
    
         * @return
    
         */
    
        @Bean
    
        public ServletRegistrationBean DruidStatViewServle2(){
    
           //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
    
           ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(newStatViewServlet(),"/druid2/*");
    
          
    
           //添加初始化参数:initParams
    
          
    
           //白名单:
    
           servletRegistrationBean.addInitParameter("allow","127.0.0.1");
    
           //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
    
           servletRegistrationBean.addInitParameter("deny","192.168.1.73");
    
           //登录查看信息的账号密码.
    
           servletRegistrationBean.addInitParameter("loginUsername","admin2");
    
           servletRegistrationBean.addInitParameter("loginPassword","123456");
    
           //是否能够重置数据.
    
           servletRegistrationBean.addInitParameter("resetEnable","false");
    
           returnservletRegistrationBean;
    
        }
    
       
    
        /**
    
         * 注册一个:filterRegistrationBean
    
         * @return
    
         */
    
        @Bean
    
        public FilterRegistrationBean druidStatFilter2(){
    
          
    
           FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(newWebStatFilter());
    
          
    
           //添加过滤规则.
    
           filterRegistrationBean.addUrlPatterns("/*");
    
          
    
           //添加不需要忽略的格式信息.
    
       filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");
    
           returnfilterRegistrationBean;
    
        }
    
       
    
    }
    
     

    启动应用就可以访问:http://{ip}:{port}/druid2/index.html输入账号和密码:admin2/123456 就可以访问了。

    下面介绍界面使用情况

  • 相关阅读:
    牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解
    2019牛客多校第九场B Quadratic equation(二次剩余定理)题解
    URAL 1132 Square Root(二次剩余定理)题解
    牛客多校第九场H Cutting Bamboos(主席树 区间比k小的个数)题解
    配置android.support.v7.widget.Toolbar 搜索框样式
    Google之路
    Editplus 竖选,竖插入技巧
    JNDI
    Spring Hibernate Transaction示例
    AOP 入门
  • 原文地址:https://www.cnblogs.com/wenq001/p/10218617.html
Copyright © 2011-2022 走看看