druid keepAlive 導致數據庫連接數飆升

一.背景

應用在執行完某個復雜業務,主要包含20幾個查詢SQL的操作后,會導致數據庫連接池一直升高

druid版本:1.2.11
druid配置文件:

spring.datasource.druid.maxActive=100
spring.datasource.druid.initialSize=20
spring.datasource.druid.maxWait=6000
spring.datasource.druid.minIdle=20
spring.datasource.druid.timeBetweenEvictionRunsMillis=6000
spring.datasource.druid.keepAlive=true
spring.datasource.druid.minEvictableIdleTimeMillis=30000
spring.datasource.druid.validationQuery=select 1 from dual
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=false
spring.datasource.druid.testOnReturn=false
spring.datasource.druid.poolPreparedStatements=true
spring.datasource.druid.maxOpenPreparedStatements=20

二.排查過程

logging.level.com.alibaba.druid=debug

打開druid debug日志,發現如下報錯

3.進行本地調試跟蹤發現druid 的shrink 方法在保活處理時存在問題。

System.arraycopy(connections, removeCount, connections, 0, poolingCount - removeCount);
Arrays.fill(connections, poolingCount - removeCount, poolingCount, null);

shrink方法中這兩行代碼從connections[]數組移除的數據庫連接,和shrink方法中這兩行代碼上面的添加到keepAliveConnections[]數組中的連接不一致

異常結果:

  1. 正常的連接引用直接丟失,也就是既不在connections[]數組,也不在keepAliveConnections[]數組
  2. 會不斷觸發新建數據庫連接,導致泄露

三.解決方案

1.關閉keepAlive

2.升級Druid版本到1.2.20

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160688.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160688.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python解決登錄圖形驗證碼

摘要:測試過程中經常遇到圖片驗證碼,以下主要是調用百度OCR圖片識別獲取驗證碼,實現登錄 1、百度云申請創建應用

【自動駕駛】一些業內自動駕駛專業術語釋義

Trajectory 軌跡信息,一般都會發布未來5-10秒的trajactory信息。 Trajectory flicker 軌跡抖動 Nudge 道內避障。在維持車道不變的情況下,橫向偏離車道中心以繞開obstacle/agent。 Xlane Nudge 借道避障。借用對向車道或自行車道以繞開obstacle/a…

VMware Workstation 與 Device/Credential Guard 不兼容 解決辦法

問題描述 問題描述: VMware 啟動虛擬機會報錯。無法運行。 錯誤信息:VMware Workstation 與 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 原因分析: 通常原因是 Window 系統開啟了 內置的Hyper-V 虛擬機。 解決方案&…

氣死了,過五關,斬六將,結果被 HR 捅了一刀!!

Hello,大家好,我是 Sunday。 大家有沒有遇到過這樣的事情:“過五關,斬六將。通過了兩輪、甚至是三輪的技術面,最后 HR 面被“捅死”了” 這樣的事情,最近在一位同學身上連續出現了兩次,弄得人…

【資深硬件工程師總結-千兆以太網設計指南】

文章目錄 01通用PCB布線指南02標志焊盤中的接地過孔區示例03EMI注意事項04ESD注意事項 資深硬件工程師總結-千兆以太網設計指南 本應用筆記旨在幫助客戶使用Microchip的10/100/1000 Mbps以太網器件系列設計PCB。本文檔提供有關PCB布線的建 議, PCB 布線是保持信號完…

【算法挨揍日記】day30——300. 最長遞增子序列、376. 擺動序列

300. 最長遞增子序列 300. 最長遞增子序列 題目解析: 給你一個整數數組 nums ,找到其中最長嚴格遞增子序列的長度。 子序列 是由數組派生而來的序列,刪除(或不刪除)數組中的元素而不改變其余元素的順序。例如&#…

遞增遞減運算符 ++ -- 前置后置的區別

1 18 運算符-算術運算符-遞增遞減_嗶哩嗶哩_bilibili 2 .1 #include <iostream> using namespace std; int main() {int a 0;int b 0;a ;b ;cout << "a " << a << endl;cout << "b " << b << endl;} 輸出…

whip和whep

原文為runner365.git大佬的文章 原文鏈接&#xff1a;https://blog.csdn.net/sweibd/article/details/124552793 WHIP接口 什么是whip 全稱: WebRTC-HTTP ingestion protocol (WHIP). rfc地址: rfc-draft-murillo-whip-00 簡單說&#xff0c;就是通過HTTP接口能導入webrtc媒…

上位機與plc寫心跳定時掃描連接狀態

方法一&#xff1a;上位機讀plc的某個地址&#xff0c;每秒 置0和置1&#xff0c;plc檢查地址值每3秒值都是1就報錯。 方法二&#xff1a;上位機每兩秒給地址置1&#xff0c;plc一秒讀到1就清除信號&#xff0c;讀到0說明心跳掉線了。

C++電腦組裝項目(涉及知識點:多態)

需求&#xff1a; #include <iostream> #include "Computer.h" #include "AbstractCpu.h" #include "AbstractMemory.h" #include "AbstractVideoCard.h" #include "IntelCpu.h" #include "IntelMemory.h" …

Redis的持久化(新)

Redis中數據都保存在內存&#xff0c;但是內存中的數據變換很快&#xff0c;也很容易丟失&#xff0c;比如連接斷開、宕機停機等等。而Redis提供的數據持久化機制有RDB(Redis DataBase)和AOF(Append Only File)。 1.RDB RDB是指在指定的時間間隔內將內存中的數據集快照寫入到磁…

HTML玩轉超鏈接a標簽

大家應該都知道&#xff0c;a標簽主要是轉跳鏈接&#xff0c;接下來&#xff0c;讓我為大家介紹一下a標簽的使用&#xff01; 主要的作用&#xff1a;從當前頁面進行跳轉 標簽名標簽語義常用屬性單/雙標簽a超鏈接href&#xff1a;要跳轉的具體位置 target&#xff1a;跳轉時如…

第一百七十七回 如何創建垂直方向的Switch

文章目錄 1. 概念介紹2. 思路與方法2.1 實現思路2.2 實現方法3. 示例代碼4. 內容總結我們在上一章回中介紹了"如何創建漸變色邊角"相關的內容,本章回中將介紹" 如何創建垂直方向的Switch".閑話休提,讓我們一起Talk Flutter吧。 1. 概念介紹 我們在前面…

zookeeper單機版的搭建

一 zookeeper的搭建 1.1 上傳zkjar包 1.2 搭建配置 1.解壓壓縮包 [rootlocalhost export]# tar -zxvf zookeeper-3.7.0-bin.tar.gz 2.創建data文件夾 [rootlocalhost export]# cd apache-zookeeper-3.7.0-bin/ [rootlocalhost apache-zookeeper-3.7.0-bin]# ls bin conf…

利用人工智能打破應試教育慣性促進學生思維活化與創新能力培養的研究

全文均為人工智能獨立研究完成 應試教育導致學生迷信標準答案慣性導致思維僵化-移動機器人-CSDN博客 用AI魔法打敗AI魔法-CSDN博客 課題名稱建議&#xff1a;“利用人工智能打破應試教育慣性&#xff0c;促進學生思維活化與創新能力培養研究”。 這個課題名稱明確指出了研究的…

高斯消元(完全主元法 and 部分主元法) C++代碼

部分主元法高斯消元 /* 算法步驟&#xff1a;1.枚舉每一列&#xff0c;找到絕對值最大的一行2.將該行和第一行交換3.將該行行首置為一4.將下面所有行第 i 列置為零 */#include <iostream> #include <cmath>using namespace std; const int N 109; const double e…

Linux內核的內存管理

Linux內核源碼內存管理主要包括以下幾個部分&#xff1a; 1. 物理內存管理&#xff1a;這部分主要負責將物理內存劃分為不同的頁表項&#xff0c;以便操作系統能夠快速地訪問和操作內存。 2. 虛擬內存管理&#xff1a;這部分主要負責將用戶空間的地址映射到物理內存中&#x…

linux之進程地址空間

文章目錄 1.進程地址空間回顧1.1進程地址空間劃分1.2驗證進程地址空間劃分1.簡單劃分2.完整劃分 2.初探進程地址空間2.1初看現象2.2Makefile的簡便寫法 3.進程地址空間詳解3.1地址空間是什么?3.2地址空間的設計/由來3.3空間區域劃分3.4如何理解地址空間?3.5解釋3.2的&#x1…

警惕.locked勒索病毒,您需要知道的預防和恢復方法。

尊敬的讀者&#xff1a; 隨著網絡技術的進步&#xff0c;勒索病毒已經成為一種極具威脅性的網絡犯罪工具之一。其中&#xff0c;.locked勒索病毒是一種采用高級加密算法的惡意軟件&#xff0c;目的是加密用戶的文件&#xff0c;并勒索贖金以提供解密密鑰。本文將介紹如何應對被…

解決No Feign Client for loadBalancing defined,修改Maven依賴

Spring微服務報錯&#xff1a; java.lang.IllegalStateException:FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-netf…