mybatis+Druid連接池的問題


首先讓我來描述問題

我有個系統是基於springmvc+mybatis+mysql+druid的,啟動系統剛開始用沒有問題,但是用着用着系統表象就是卡死

分析:

1:通過表象是不是有可能數據庫鎖表了,通過jvm的jstack -l pid(進程id)

  如何得到進程id呢?--到jdk安裝的bin目錄執行 jps命令得到pid

打印出堆棧信息

此時沒辦法只能看druid的源碼找到

此時要引起注意,看源碼的時候一點要注意if條件的地方,此時我考慮是不是maxWait沒有配置默認為0,此時我到自己的配置文件中配置

然后再次嘗試,系統依然還是掛了,在此運行jstack堆棧信息再沒有出現上面的錯誤,到此問題沒有得到解決,告一段落

此時我發現用Druid它提供一個圖形化界面

 

在沒有解決問題之前這兩個值一直不相等,打開連接數和關閉數隨着請求的增多在增大,增到到連接池最大數直接掛了,問題終於算找到了,如何解決呢

 1:是不是配置文件有問題,到處找資料,嘗試,問題沒有得到解決

 2:嘗試不同的url請求,其中有些url是不會擴大打開和關閉連接數之差,有些會擴大(此時問題又在縮小范圍)

 3:仔細看那些擴大范圍的請求,發現,這些請求都是需要分頁的請求,那些不會擴大的都是不涉及到分頁的請求(問題又在縮小范圍)

 4:mybatis分頁我是寫了個攔截器通過Jdbc分頁,此時仔細看代碼發現代碼里面,當打開數據庫連接的時候有個連接對象忘記關閉了,就是如下的紅色代碼

 

加上去之后,再次處理問題,問題得到解決,不管怎么請求現在打開數和關閉數數據永遠相等,系統正常,問題得到解決,OH Good!!!!!!

 其實之間想如果這條路走不通,我想是不是可能druid版本問題,如果此條路行不通,打算換用其他連接池試試,還有會不時是spring配置有問題等等猜測,只有對問題永不放棄,什么問題都能得到解決..................


免責聲明!

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



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