日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Druid使用报告

發布時間:2023/12/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Druid使用报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
眾所周知, Druid 出自阿里巴巴技術團隊之手,被譽為是好的數據庫連接池沒有之一。灑家讀書少,之前一直使用c3p0或者tomcat連接池,最近聽聞druid很強,遂體驗一波.

此次灑家是在現有項目上測試druid連接池,從一個開發者的角度體驗druid的集成便利程度/穩定性,以及druid為人稱道的監控功能.

?官方 github 地址:https://github.com/alibaba/druid/wiki/常見問題

廢話不多說,貼上常規集成druid方法,其實很簡單;

第一步:pom中添加druid依賴:?

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.29</version> </dependency>復制代碼

第二步:spring配置文件中定義數據源

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><!-- 基本屬性 url、user、password --><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="initialSize" value="5" /><property name="minIdle" value="20" /><property name="maxActive" value="200" /><property name="maxWait" value="60000" /><!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000" /><property name="validationQuery" value="SELECT 'x'" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="removeAbandoned" value="true" /><property name="removeAbandonedTimeout" value="1800" /><!-- 打開PSCache,并且指定每個連接上PSCache的大小 --><property name="poolPreparedStatements" value="true" /><property name="maxPoolPreparedStatementPerConnectionSize" value="20" /><!-- 配置監控統計攔截的filters --><property name="filters" value="stat" /> </bean>復制代碼

第三步: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> <filter-mapping><filter-name>DruidWebStatFilter</filter-name><url-pattern>/*</url-pattern> </filter-mapping> <!-- druid的Servlet --> <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>復制代碼

至此我們已經配置完畢,按理說是可以跑起來的,但我這邊還是出了一些問題,這個后面說,我們先看看成功后的效果:

1.項目成功啟動后,輸入http://ip:端口+/druid/即可進入Druid Web URI Sta頁面


提供了sql監控頁面:


對比一下pg_stat_statements插件監控sql的效果


還有 URl監控頁面


對比灑家自用的monitor訪問日志監控工具效果


druid提供的監控效果如何不言而喻;

2.接下來說說druid的集成難易程度,集成過程中還是遇到一些問題的,對于現成的項目切換成druid連接池甚至還需要改java源碼(如果業務上用到的話)

問題a:若數據庫為鏡像數據庫(比如docker部署的postgres鏡像數據庫),則切換為druid后會報錯無法啟動項目:


若將數據庫改為本地或者云數據庫都可以成功啟動,唯獨使用使用鏡像數據庫會有這個問題(或許是配置的問題?有知道的少俠告知一下)

問題b:對現成項目切換為druid連接池可能產生代碼報錯



總結:

缺點1.對數據庫為鏡像數據庫如docker部署的postgres會報錯服務起不來,看了官網文檔暫時未找到解決辦法?

2.url監控有數據但是統計還差那么一點點細顆粒度比如一般要看特定時間范圍內特定接口的平均/最大最小響應時間這個不明白為啥他沒做全,并且他的數據似乎不能存入數據庫,可以存入日志,我覺得還是直接存入數據庫的好?

3.對于現有的項目從別的連接池遷移到druid連接池可能造成未知報錯,繼而需要改底層業務代碼,對代碼的入侵性還是有一些的 對比:將druid監控拆解開來看,每一項都沒有做到最好,每一項都有對應市面上做得更好的, 如對sql的統計沒有pg_stat_statements(一般運維會裝的獨立的數據庫監控組件)統計的詳細, 對url的監控沒有monitor.jar統計顆粒度細 ?

一句話概括druid提供的監控確實挺方便,能夠滿足簡單需求,適合新項目且監控要求不高的應用場景;如果是現有維護中的項目,或者監控要求較高的項目,druid明顯可以做得更好;



總結

以上是生活随笔為你收集整理的Druid使用报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。