Druid强大的监控和扩展功能

Druid不仅是数据库连接池,还提供强大的监控和扩展功能.

Druid监控配置

  1. SSM项目
    ①添加Maven依赖
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.1</version>
    </dependency>
    
    ②web.xml中进行配置
    <filter>
        <filter-name>DruidWebStatFilter</filter-name>
        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
        <init-param>
          <param-name>exclusions</param-name>
          <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
        </init-param>
    </filter>
    <!--druid监控页面 -->
    <servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
        <init-param>
            <!-- 不允许清空统计数据 -->
            <param-name>resetEnable</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <!-- 用户名 -->
            <param-name>loginUsername</param-name>
            <param-value>yourname</param-value>
        </init-param>
        <init-param>
            <!-- 密码 -->
            <param-name>loginPassword</param-name>
            <param-value>yourpassword</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>
    <!--druid监控页面 -->
    

重新构建工程并重启项目,访问/druid即可进入到druid监控面板的登录页面,输入在web.xml中配置的账号和密码即可进入监控后台

  1. Spring Boot项目
    ①添加Maven依赖
      同1.
    ②修改application.yml文件

    spring:
        datasource:
              driver-class-name: com.mysql.cj.jdbc.Driver
              url: ----------------
              username: ---
              password: ---
                  #druid配置
              type: com.alibaba.druid.pool.DruidDataSource
                  #数据源其他配置
                  #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
              initialSize: 5
                  #最小连接池数量
              minIdle: 5
                  #最大连接池数量
              maxActive: 20
                  #获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁
              maxWait: 60000
                  #1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
              timeBetweenEvictionRunsMillis: 60000
              minEvictableIdleTimeMillis: 300000
                  #用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
              validationQuery: SELECT 1 FROM DUAL
                  #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
              testOnBorrow: false
                  #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
              testOnReturn: false
                  #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
              poolPreparedStatements: false
              maxPoolPreparedStatementPerConnectionSize: 20
                  #属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wall
              filters: stat,wall
                  #合并多个DruidDataSource的监控数据
              useGlobalDataSourceStat: true
                  #通过connectProperties属性来打开mergeSql功能;慢SQL记录
              connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
    

    ③配置Druid

    @Configuration
    public class DruidConfig {
        @ConfigurationProperties(prefix="spring.datasource")
        @Bean
        public DataSource druid(){
            return new DruidDataSource();
        }
    
        /**
         * 注册一个StatViewServlet
         * @return
         */
        @Bean
        public ServletRegistrationBean statViewServlet(){
            ServletRegistrationBean bean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
            Map<String, String> initParams=new HashMap<>();
            initParams.put("loginUsername","admin");
            initParams.put("loginPassword","123456");
            bean.setInitParameters(initParams);
            return bean;
        }
        /**
         * 注册一个filterRegistrationBean
         * @return
         */
        @Bean
        public FilterRegistrationBean webStatFilter() {
            FilterRegistrationBean bean = new FilterRegistrationBean();
            bean.setFilter(new WebStatFilter());
            Map<String, String> initParams=new HashMap<>();
            initParams.put("exclusions", "*.js,*.css,/druid/*");
            bean.setInitParameters(initParams);
            bean.setUrlPatterns(Arrays.asList("/*"));
            return bean;
        }
    }
    

    重启项目,访问/druid,输入配置中的账号密码进入监控后台.
    后台监控


 上一篇
MySQL 6以后的驱动更新及时区问题 MySQL 6以后的驱动更新及时区问题
驱动更新mysql 5及之前的版本使用的是旧版驱动”com.mysql.jdbc.Driver”mysql 6及之后的版本需要更新到新版驱动”com.mysql.cj.jdbc.Driver”,否则版本不匹配便会报错 时区设定使用新版驱动”
2019-03-12 linhai
下一篇 
JavaScript中的for..in循环 JavaScript中的for..in循环
在JS中使用循环,常用两种方式 for(var i=0;i<obj.length;i++){…} for (var i in obj) {…} 问题复现在一次使用for..in循环对象时,发现循环次数大于对象的size,从而影响了
2019-03-05 linhai
  目录