zoukankan      html  css  js  c++  java
  • Druid连接池基本配置及监控配置

    1.配置Druid连接池,监控慢sql

     1     <!-- 数据源配置, 使用 Druid 数据库连接池 -->
     2     <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
     3         <property name="url" value="${jdbc_url}" />
     4         <property name="username" value="${jdbc_username}" />
     5         <property name="password" value="${jdbc_password}" />
     6         <!-- 配置初始化大小、最小、最大 --> 
     7         <property name="initialSize" value="0" />
     8         <property name="minIdle" value="0" />
     9         <property name="maxActive" value="20" />
    10         <!-- 配置获取连接等待超时的时间 -->
    11         <property name="maxWait" value="60000" />
    12         <!-- 这里建议配置为TRUE,防止取到的连接不可用。获取链接的时候,不校验是否可用,开启会有损性能--> 
    13         <property name="testOnBorrow" value="true" />
    14         <!-- 归还链接到连接池的时候校验链接是否可用 -->
    15         <property name="testOnReturn" value="false" />
    16         <!-- 此项配置为true即可,不影响性能,并且保证安全性。意义为:申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效 -->
    17         <property name="testWhileIdle" value="true" />
    18         <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒 -->
    19         <property name="timeBetweenEvictionRunsMillis" value="60000" />
    20         <!-- 配置一个连接在池中最小生存的时间,单位毫秒 -->
    21         <property name="minEvictableIdleTimeMillis" value="300000" />
    22         <!-- 链接使用超过时间限制是否回收 -->
    23         <property name="removeAbandoned" value="true" />
    24         <!-- 超过时间限制时间(单位秒),目前为5分钟,如果有业务处理时间超过5分钟,可以适当调整。 -->
    25         <property name="removeAbandonedTimeout" value="300" />
    26         <!-- #链接回收的时候控制台打印信息,测试环境可以加上true,线上环境false。会影响性能。 -->
    27         <property name="logAbandoned" value="true" />
    28         <!-- 验证连接有效与否的SQL,不同的数据配置不同 --> 
    29           <property name="validationQuery" value="select 1 " />
    30           <!-- 配置监控统计拦截的filters,用于在界面中统计sql和开启druid防火墙。注意: -->
    31         <!-- 监控中有jdbcSqlStat,原因是:com.alibaba.druid.statJdbcDataSourceStat中的createSqlStat方法中,
    32             用了一个map来存放所有的sql语句,这样会导致线上触发FullGC,可将此处注释掉 -->
    33         <property name="filters" value="wall,stat" />
    34         <!-- 映射慢sql -->
    35          <property name="proxyFilters">
    36             <list>
    37                 <ref bean="statfilter"/>
    38                 <ref bean="logFilter"/>
    39             </list>
    40         </property>
    41     </bean> 
    42     
    43     <!-- 慢SQL记录  -->
    44     <bean id="statfilter" class="com.alibaba.druid.filter.stat.StatFilter">
    45         <!-- 开启合并sql -->
    46         <property name="mergeSql" value="true" />
    47         <!-- 开启慢查询语句,200毫秒 -->
    48         <property name="slowSqlMillis" value="200" />
    49         <property name="logSlowSql" value="true" />
    50     </bean>
    51     
    52     <bean id="logFilter" class="com.alibaba.druid.filter.logging.Log4jFilter">
    53         <property name="resultSetLogEnabled" value="false" />
    54         <property name="statementExecutableSqlLogEnable" value="true" />
    55     </bean>

      注意:要使用log4j,使用lockback不可以

    2.web.xml中配置servlet和过滤器

     1     <servlet>
     2         <servlet-name>DruidStatView</servlet-name>
     3         <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
     4         <init-param>
     5             <!-- 允许清空统计数据 -->
     6             <param-name>resetEnable</param-name>
     7             <param-value>true</param-value>
     8         </init-param>
     9         <init-param>
    10             <!-- 用户名 -->
    11             <param-name>loginUsername</param-name>
    12             <param-value>druid</param-value>
    13         </init-param>
    14         <init-param>
    15             <!-- 密码 -->
    16             <param-name>loginPassword</param-name>
    17             <param-value>druid</param-value>
    18         </init-param>
    19     </servlet>
    20     <servlet-mapping>
    21         <servlet-name>DruidStatView</servlet-name>
    22         <url-pattern>/druid/*</url-pattern>
    23     </servlet-mapping>
    24     <filter>
    25         <filter-name>druidWebStatFilter</filter-name>
    26         <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    27         <init-param>
    28             <param-name>exclusions</param-name>
    29             <param-value>/public/*,*.js,*.css,/druid*,*.jsp,*.swf</param-value>
    30         </init-param>
    31         <init-param>
    32             <param-name>principalSessionName</param-name>
    33             <param-value>sessionInfo</param-value>
    34         </init-param>
    35         <init-param>
    36             <param-name>profileEnable</param-name>
    37             <param-value>true</param-value>
    38         </init-param>
    39     </filter>
    40     <filter-mapping>
    41         <filter-name>druidWebStatFilter</filter-name>
    42         <url-pattern>/*</url-pattern>
    43     </filter-mapping>

    3.访问控制台

      IP:port/项目名/druid/index.html 可以看到各种监控。

      当然,也可以通过日志文件来查看哪一条sql属于慢SQL,从而进行优化。

     

  • 相关阅读:
    IP路由选择过程
    Netstat命令详解
    路由器的硬件结构
    路由器发展编年史 完结篇
    制作自己博客园文章签名
    路由器发展编年史 发展篇
    距离矢量路由协议_(4)
    路由器的基本功能
    分组交换、报文交换、电路交换
    动态路由中的几种常见metric
  • 原文地址:https://www.cnblogs.com/xbq8080/p/7099943.html
Copyright © 2011-2022 走看看