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,從而進行優化。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM