配置druid連接池的內置監控統計功能

配置druid連接池的內置監控統計功能

打開監控統計功能

Druid的監控統計功能是通過filter-chain擴展實現,如果你要打開監控統計功能,配置StatFilter,具體如下所示

<!-- 數據庫連接 -->
    <bean id="dataBasePasswordCallback" class="com.haiyoung.util.DataBasePasswordCallback"/>
    <bean id="dataSource_pyxis" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close" init-method="init" lazy-init="true">
        <!-- 基本屬性 url、user、password -->
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
        <property name="connectionProperties"
                  value="......"/>
        <property name="passwordCallback" ref="dataBasePasswordCallback"/>

        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="${db.initialSize}"/>
        <property name="minIdle" value="${db.minIdle}"/>
        <property name="maxActive" value="${db.maxActive}"/>
        <!-- 配置獲取連接等待超時的時間,單位是毫秒 -->
        <property name="maxWait" value="${db.maxWait}"/>
        <!-- 要啓用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改爲true -->
        <property name="maxPoolPreparedStatementPerConnectionSize" value="${db.maxPoolPreparedStatementPerConnectionSize}"/>
        <!-- 配置間隔多久才進行一次檢測(啓動destroy線程),檢測需要關閉的空閒連接,單位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${db.timeBetweenEvictionRunsMillis}"/>
        <!-- 配置一個連接在池中最小生存的時間,單位是毫秒;即最多允許一個連接空閒多長時間,超出此時間的連接,會被destroy線程關閉 -->
        <property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}"/>
        <!-- 對空閒接連再被使用時,如果空閒時間超過timeBetweenEvictionRunsMillis,會發出驗證sql進行有效檢測 -->
        <property name="testWhileIdle" value="true"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
        <property name="validationQuery" value="${db.validationQuery}"/>
        <!-- 移除執行超時的sql,單位是秒 -->
        <property name="removeAbandoned" value="${db.removeAbandoned}"/>
        <property name="removeAbandonedTimeout" value="${db.removeAbandonedTimeout}"/>
        <property name="logAbandoned" value="true"/>

        <!-- 配置監控統計攔截的filters 
        Druid的監控統計功能是通過filter-chain擴展實現,如果你要打開監控統計功能,配置StatFilter,具體看這裏
        -->
        <property name="proxyFilters">
            <list>
                <ref bean="druid_stat_filter"/>
                <ref bean="druid_wall_filter"/>
                <ref bean="druid_log_filter"/>
            </list>
        </property>
    </bean>

    <bean class="com.alibaba.druid.filter.stat.StatFilter" id="druid_stat_filter">
        <!-- 慢sql規則,單位毫秒 -->
        <property name="slowSqlMillis" value="10000"/>
        <!-- 記錄慢sql到日誌 -->
        <property name="logSlowSql" value="true"/>
        <!-- 統計時合併相似sql -->
        <property name="mergeSql" value="true"/>
    </bean>

    <!-- sql防禦 -->
    <bean class="com.alibaba.druid.wall.WallFilter" id="druid_wall_filter">
        <!-- 記錄違反規則的sql到日誌 -->
        <property name="logViolation" value="true"/>
    </bean>

    <bean class="com.alibaba.druid.filter.logging.Slf4jLogFilter" id="druid_log_filter">
        <!-- 記錄真正執行的語句,即參數已注入的sql -->
        <property name="statementExecutableSqlLogEnable" value="true"/>
        <!-- 其它配置 -->
        <property name="statementCreateAfterLogEnabled" value="false"/>
        <property name="statementPrepareAfterLogEnabled" value="false"/>
        <property name="statementParameterSetLogEnabled" value="false"/>
        <property name="statementCloseAfterLogEnabled" value="false"/>
        <property name="resultSetCloseAfterLogEnabled" value="false"/>
    </bean>

配置StatViewServlet

Druid內置提供了一個StatViewServlet用於展示Druid的統計信息。
這個StatViewServlet的用途包括:

  • 提供監控信息展示的html頁面
  • 提供監控信息的JSON API
    StatViewServlet是一個標準的javax.servlet.http.HttpServlet,需要配置在你web應用中的WEB-INF/web.xml中。
    具體配置如下所示:
  <servlet>
      <servlet-name>DruidStatView</servlet-name>
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>DruidStatView</servlet-name>
      <url-pattern>/druid/*</url-pattern>
  </servlet-mapping>

根據配置中的url-pattern來訪問內置監控頁面,如果是上面的配置,內置監控頁面的首頁是/druid/index.html
http://ip:port/context-name/druid/index.html

監控頁面展示

  • 數據源列表
    數據源列表
  • SQL監控
    SQL監控

druid監控功能很豐富,可以通過配置開啓,官網wiki有詳細介紹
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章