最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

阿里Druid數(shù)據(jù)連接池引發(fā)的線上異常解決

 更新時間:2022年03月05日 14:31:28   作者:kl  
這篇文章主要為大家介紹了一次關于阿里Druid數(shù)據(jù)連接池引發(fā)的線上異常問題的解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

前言

事件起因:項目使用了activiti工作流,系統(tǒng)是由老的spring mvc項目改造成的spring boot項目,數(shù)據(jù)庫鏈接池從dbcp切換到druid,新系統(tǒng)上線后,同事多次系統(tǒng)隔一段時間后數(shù)據(jù)查詢就很慢,基本出不來。

由此開始了線上bug排查之路。這個問題從一開始就模糊定位到數(shù)據(jù)庫層面的問題,因為只有和數(shù)據(jù)相關的操作會很慢,其他服務不受影響,并且在中午休息時沒有問題,在下午剛上班后不就出現(xiàn)。

過程一:定位工作流

首先第一反應是看日志:日志一切正常,并沒有任何異常信息拋出,然后將日志級別調(diào)整到debug,發(fā)現(xiàn)了一些問題,中午休息時,用戶沒有操作的情況下,日志一直在輸出jpa的連接信息,最后定位是工作流的異步執(zhí)行器在輪詢,因為在spring boot環(huán)境下spring.activiti.async-executor-activate=true默認是true的,如果不需要使用可以設置為false,改完后情況依舊

過程二:定位JPA的OpenEntityManagerInViewInterceptor

使用OpenEntityManagerInViewInterceptor后服務端在接收到一個請求的時候開啟EntityManager,在請求結束的時候才去關閉這個EntityManager,所以在用戶數(shù)多,并發(fā)高,操作耗時的情況下會造成數(shù)據(jù)連接不夠用的情況,而我們的業(yè)務有這個特征。

在spring boot環(huán)境中,OpenEntityManagerInViewInterceptor默認是開啟的,然而我們使用spring.jpa.open-in-view=false關閉后,問題依舊,不過比之前的間隔時間久一點了

過程三:定位Druid,真正的罪魁禍首

使用top定位到程序pid,然后使用jstack -l 2591 >>dump.out 拿到當前堆棧快照后發(fā)現(xiàn)如下

"http-nio-8080-exec-54" daemon prio=10 tid=0x0000000000e61000 nid=0xcc9 waiting on condition [0x00007f4a753d4000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007a143f230> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:1732)
	at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1330)
	at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1198)
	at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4619)

所有的請求都被druid的獲取連接操作阻塞了,最后看源碼如下

因為數(shù)據(jù)鏈接沒有釋放,連接池中無可用連接,導致請求被阻塞了

到這里基本上就是真相了,最后換成spring boot自帶的連接池tomcat jdbc后一切正常

后記:

定位到問題后,發(fā)現(xiàn)網(wǎng)上很多人遇到了連接泄露的情況,可見druid的官方issue,如https://github.com/alibaba/druid/issues/1160

不過druid也提供了相應的方案,如下

雖然官方說可能是應用自己導致連接未被釋放導致連接泄露,但是為什么切換別家的連接池后就毛事都沒有呢,元芳,你怎么看呢?

以上就是阿里Druid數(shù)據(jù)連接池引發(fā)的線上異常解決的詳細內(nèi)容,更多關于Druid數(shù)據(jù)連接池線上異常的資料請關注腳本之家其它相關文章!

相關文章

  • Java排序算法總結之堆排序

    Java排序算法總結之堆排序

    這篇文章主要介紹了Java排序算法總結之堆排序,詳細分析了堆排序的原理與java實現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • SpringBoot整合activemq的案例代碼

    SpringBoot整合activemq的案例代碼

    ActiveMQ是消息隊列技術,為解決高并發(fā)問題而生,本文通過案例代碼給大家介紹pringBoot整合activemq的詳細過程,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • java中ArrayList與LinkedList對比詳情

    java中ArrayList與LinkedList對比詳情

    這篇文章主要通過實例對Java中ArrayList與LinkedList進行了對比,需要的朋友可以參考下
    2017-04-04
  • mybatis-plus如何修改日志只打印SQL語句不打印查詢結果

    mybatis-plus如何修改日志只打印SQL語句不打印查詢結果

    這篇文章主要介紹了mybatis-plus如何修改日志只打印SQL語句不打印查詢結果問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Apache Commons fileUpload實現(xiàn)文件上傳之一

    Apache Commons fileUpload實現(xiàn)文件上傳之一

    這篇文章主要介紹了Apache Commons fileUpload實現(xiàn)文件上傳之一的相關資料,需要的朋友可以參考下
    2016-03-03
  • Maven jar包下載失敗問題的處理方法

    Maven jar包下載失敗問題的處理方法

    很多同學在Maven里下載一些依賴的時候,即下載jar包的時候總是會出現(xiàn)一些問題,本文將就這個問題給大家詳細的講解一下,需要的朋友可以參考下
    2023-06-06
  • eclipse 中的javac命令與java命令

    eclipse 中的javac命令與java命令

    這篇文章主要介紹了eclipse javac命令與java命令的相關資料,需要的朋友可以參考下
    2016-12-12
  • SpringBoot如何使用@Aspect注解實現(xiàn)AOP

    SpringBoot如何使用@Aspect注解實現(xiàn)AOP

    這篇文章主要介紹了SpringBoot如何使用@Aspect注解實現(xiàn)AOP問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 帶你快速搞定java多線程(2)

    帶你快速搞定java多線程(2)

    這篇文章主要介紹了java多線程編程實例,分享了幾則多線程的實例代碼,具有一定參考價值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下
    2021-07-07
  • Java8實現(xiàn)對List<Integer>的求和

    Java8實現(xiàn)對List<Integer>的求和

    這篇文章主要介紹了Java8實現(xiàn)對List<Integer>的求和方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論

罗定市| 普兰县| 宁波市| 高平市| 阿拉善右旗| 舞阳县| 新宁县| 长子县| 乃东县| 许昌市| 施甸县| 博兴县| 历史| 弋阳县| 嵩明县| 滨海县| 桦南县| 亳州市| 玉门市| 英吉沙县| 泗水县| 江西省| 通海县| 靖西县| 平远县| 罗定市| 门源| 喀喇沁旗| 邮箱| 延安市| 澄迈县| 石嘴山市| 淄博市| 南华县| 富锦市| 绥德县| 新丰县| 昌乐县| 聂拉木县| 馆陶县| 汶川县|