mybatis+Druid鏈接池的問題

首先讓我來描述問題mysql

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

分析:sql

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

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

打印出堆棧信息mvc

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

此時要引發注意,看源碼的時候一點要注意if條件的地方,此時我考慮是否是maxWait沒有配置默認爲0,此時我到本身的配置文件中配置ui

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

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

 

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

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

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

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

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

 

加上去以後,再次處理問題,問題獲得解決,無論怎麼請求如今打開數和關閉數數據永遠相等,系統正常,問題獲得解決,OH Good!!!!!!

 其實之間想若是這條路走不通,我想是否是可能druid版本問題,若是此條路行不通,打算換用其餘鏈接池試試,還有會不時是spring配置有問題等等猜想,只有對問題永不放棄,什麼問題都能獲得解決..................

相關文章
相關標籤/搜索