[Java實戰]Spring Boot整合達夢數據庫連接池配置(三十四)

[Java實戰]Spring Boot整合達夢數據庫連接池配置(三十四)

一、HikariCP連接池配置(默認)

1. 基礎配置(application.yml

spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://localhost:5236/DB_NAME?schema=SYSDBAusername: SYSDBApassword: SYSDBA# HikariCP連接池配置hikari:pool-name: DM-HikariPoolconnection-timeout: 30000  # 連接超時時間(ms)maximum-pool-size: 20      # 最大連接數minimum-idle: 5           # 最小空閑連接idle-timeout: 600000      # 空閑連接超時時間(ms)max-lifetime: 1800000     # 連接最大存活時間(ms)connection-test-query: SELECT 1 FROM DUAL

2. 驗證配置生效

在應用啟動日志中搜索 HikariPool-1 - Starting... 確認連接池初始化成功:

2024-05-26 14:20:00.123 INFO  [main] com.zaxxer.hikari.HikariDataSource 
- HikariPool-1 - Starting...
2024-05-26 14:20:01.456 INFO  [main] com.zaxxer.hikari.HikariDataSource 
- HikariPool-1 - Start completed.

二、Druid連接池配置(推薦監控功能)

1. 添加Druid依賴(pom.xml

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.18</version>
</dependency><!-- 達夢JDBC驅動 --><dependency><groupId>com.dameng</groupId><artifactId>Dm8JdbcDriver18</artifactId><version>8.1.1.49</version></dependency>

2. 完整配置(application.yml

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://localhost:5236/DB_NAME?schema=SYSDBAusername: SYSDBApassword: SYSDBAdruid:# 連接池核心配置initial-size: 5min-idle: 5max-active: 20max-wait: 60000# 監控配置filter:stat:enabled: truelog-slow-sql: trueslow-sql-millis: 2000web-stat-filter:enabled: truestat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: admin123

3. 添加達夢方言配置類

@Configuration
public class DruidConfig {@Beanpublic DruidStatInterceptor druidStatInterceptor() {return new DruidStatInterceptor();}@Bean@Role(BeanDefinition.ROLE_INFRASTRUCTURE)public Advisor druidStatAdvisor() {return new DefaultPointcutAdvisor(new AnnotationMatchingPointcut(WebService.class, null),druidStatInterceptor());}
}

4. 訪問監控頁面

啟動應用后訪問監控面板:
http://localhost:8080/druid/login.html
使用配置的用戶名密碼登錄(示例中為admin/admin123

三、連接池驗證測試

測試1:連接泄漏檢測

@SpringBootTest
public class ConnectionLeakTest {@Autowiredprivate DataSource dataSource;@Testpublic void testConnectionLeak() throws SQLException {for(int i=0; i<30; i++) {Connection conn = dataSource.getConnection();// 未關閉連接,觸發連接池警告System.out.println("獲取連接:"+conn);}}
}

預期日志

ERROR [alibaba.druid.pool.DruidDataSource] - discard connection, 
activeCount 20, maxActive 20

測試2:性能壓力測試

使用JMeter模擬100并發查詢請求,觀察連接池表現:

監控指標正常范圍異常處理建議
ActiveCount<= maxActive調大maxActive
WaitThreadCount持續>0檢查慢SQL或連接泄漏
PoolingCount≈ maxActive/2調整initialSize/minIdle

四、生產環境最佳實踐

1. 連接池參數建議

druid:max-active: 50            # 根據DB最大連接數設置initial-size: 10min-idle: 10max-wait: 3000            # 獲取連接超時時間time-between-eviction-runs-millis: 60000  # 檢測間隔min-evictable-idle-time-millis: 300000     # 最小空閑時間

2. 安全加固

druid:filter:wall:config:delete-allow: false   # 禁止DELETE無WHEREdrop-table-allow: false

3. 定期監控指標

  • 活躍連接數DataSource.getActiveCount()
  • 等待線程數DataSource.getWaitThreadCount()
  • SQL執行時間:通過Druid監控頁查看

五、常見問題解決

問題1:連接池初始化失敗

錯誤信息Failed to initialize pool: Unknown database 'DB_NAME'
解決方案

  1. 檢查達夢服務是否運行
  2. 驗證數據庫名稱是否正確
  3. 確認用戶權限:SYSDBA默認有DBA權限

問題2:連接泄漏

現象:活躍連接數持續增長不釋放
排查步驟

  1. 啟用Druid的removeAbandoned配置
    druid:remove-abandoned: trueremove-abandoned-timeout: 300  # 5分鐘未關閉連接強制回收
    
  2. 分析日志中abandoned connection警告定位代碼

希望本教程對您有幫助,請點贊??收藏?關注支持!歡迎在評論區留言交流技術細節!

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

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

相關文章

【MySQL】08.視圖

視圖就是一個由查詢到的內容定義的虛擬表。它和真實的表一樣&#xff0c;視圖包含一系列帶有名稱的列和行數據。視圖的數據變化會影響到基表&#xff0c;基表的數據變化也會影響到視圖。 1. 基本使用 mysql> select * from user; -------------------- | id | age | name …

4 通道1250MSPS‐16bit DAC 回放板

簡介 4 通道1250MSPS‐16bit DAC 回放板 是一款4 路轉換速率最高為1250MSPS 的DAC 回放板&#xff0c; DAC 位數16bit&#xff1b;板卡支持觸發輸出/觸發輸入&#xff1b;DAC 采樣時鐘源支持內部參考時 鐘、外部參考時鐘、外部采樣時鐘三種方式&#xff0c;可通過SPI 總線實現時…

C/C++---類型轉換運算符

在C中&#xff0c;類型轉換運算符&#xff08;Type Conversion Operator&#xff09;允許類對象在需要時自動轉換為其他類型。這是一種特殊的成員函數&#xff0c;能夠增強類的靈活性和交互性。 1. 基本語法 類型轉換運算符的聲明格式為&#xff1a; operator 目標類型() co…

大模型Agent

手撕 Agent 1、功能描述 設計一個 Agent,自動選擇使用以下工具回答用戶的問題: 查看目錄下的文件基于給定的文檔回答用戶問題查看與分析 Excel 文件撰寫文檔調用 Email 客戶端發郵件2、演示用例 實驗中使用三個文檔演示 Agent 的能力 ./data|__2023年8月-9月銷售記錄.xlsx…

超臨界機組協調控制系統建模項目開發筆記

超臨界機組協調控制系統建模項目開發筆記 項目概述 本項目基于兩篇論文的方法&#xff0c;對超臨界機組協調控制系統進行數據驅動建模。主要使用LSTMTransformer混合架構&#xff0c;實現對主蒸汽壓力(Pst)、分離器蒸汽焓值(hm)和機組負荷(Ne)的預測。同時&#xff0c;通過消…

mysql安全管理

數據庫管理系統用于管理數據庫服務器的各種數據庫資源&#xff0c;MYSQL是一個支持多用戶的數據庫管理系統&#xff0c;實現多用戶下&#xff0c;各種數據庫資源的安全訪問控制&#xff0c;確保數據庫資源安全訪問成為了數據庫管理系統的核心功能。MYSQL安全管理是指允許合法賬…

QT中常用的類

Qt 是一個功能強大的跨平臺框架&#xff0c;提供了豐富的類庫來開發 GUI 和應用程序。以下是 ??Qt 中常用的核心類??&#xff0c;按模塊分類整理&#xff1a; ??1. GUI 和窗口管理?? 類名用途示例場景??QWidget??所有 GUI 控件的基類&#xff08;按鈕、窗口等&…

【Redis原理篇】五大基本數據類型的底層編碼方式

上文&#xff1a;redis底層數據結構 String底層結構 一、編碼方式 1.int編碼 **適用范圍&#xff1a;**64位整數&#xff08;long&#xff09; **實現&#xff1a;**直接將數據存儲在redisObject的ptr指針位置。 內存布局&#xff1a; 2.embstr編碼 **適用條件&#xf…

自動編碼器 潛在空間 Autoencoders 視頻截圖

【雙語】Autoencoders_嗶哩嗶哩_bilibili 【雙語】Autoencoders_嗶哩嗶哩_bilibili

ZLG USBCANFD python UDS刷寫腳本

文章目錄 概述python UDS 刷寫腳本UI交互界面概述 在實際工作中,有使用周立功的UDSCANFD設備,用來收發CAN數據和UDS on CAN的診斷測試或者UDS on CAN的ECU升級。上位機使用ZCANPro,軟件自帶ECU刷新界面,可以編輯UDS服務,加載升級文件等,能用是能用,但是仍不能滿足一些特…

線程安全問題的成因

前言 大家晚上好呀~~ 今天學習了線程不安全問題的成因。線程安全問題是十分重要的知識點&#xff0c;我想把我所學的與大家分享一波&#xff0c;希望可以幫助到有需要的人&#xff0c;同時加深自己對于線程安全問題的理解。 分析過程如下 結語 今天心情還不錯~ 要堅持持續…

C++可變參數宏定義語法筆記

1. 基礎語法 定義格式&#xff1a; #define MACRO_NAME(fixed_args, ...) macro_body#define LOG(fmt, ...) printf(fmt, __VA_ARGS__) LOG("Value: %d, Name: %s", 42, "Alice"); // 展開為 printf("Value: %d, Name: %s", 42, "Alice&q…

mongodb安裝啟動

這里寫自定義目錄標題 安裝包下載安裝后文件目錄列表bin目錄下 mongod 可以對mongodb 進行啟動等操作 環境變量配置創建數據目錄&#xff0c;日志目錄啟動參數配置啟動 mongodbweb頁面訪問&#xff0c;檢查服務啟動是否正常可視化工具連接mongodb創建 database創建collection查…

Leetcode 3562. Maximum Profit from Trading Stocks with Discounts

Leetcode 3562. Maximum Profit from Trading Stocks with Discounts 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3562. Maximum Profit from Trading Stocks with Discounts 1. 解題思路 這一題沒有搞定&#xff0c;思路上整體走偏了&#xff0c;看了一下別人的解答&…

【Redis】第2節|Redis基本數據類型

一、基礎數據結構 1. String&#xff08;字符串&#xff09; 特點&#xff1a;二進制安全&#xff0c;支持字符串、數值存儲&#xff0c;原子性操作。核心操作&#xff1a; SET key value # 存儲鍵值對 GET key # 獲取值 INCR key # 數值…

用matlab提取abaqus odb文件中的節點信息

在MATLAB中提取Abaqus ODB文件中的節點信息&#xff0c;可以通過以下幾種方法實現&#xff1a; 方法1&#xff1a;使用MATLAB的ABAQUS Interface工具箱 https://wenku.csdn.net/answer/77axwtqnys 可以參考這個 MATLAB的ABAQUS Interface工具箱提供了直接讀取ODB文件的功能。…

【Java】異常處理

1.異常的概念 在程序運行時&#xff0c;打斷正常程序流程的不正常情況分兩類: 1.錯誤(Error)&#xff1a;應用程序無法捕獲的嚴重問題(自己無法處理) 例&#xff1a; 虛擬機相關的問題&#xff0c;如虛擬機崩潰、動態鏈接失敗、低層資源錯誤等 總是不受編譯器檢查的&#xff0…

Linux(Centos 7.6)命令詳解:tar

1.命令作用 命令tar將許多文件一起保存到單個磁帶或磁盤存檔中&#xff0c;并且可以從存檔中恢復單個文件(GNU tar saves many files together into a single tape or disk archive, and can restore individual files from the archive.)。 2.命令語法 Usage: tar [OPTION.…

企業網絡綜合實訓

企業網絡綜合實訓 任務描述&#xff1a; 公司的中心機房、辦公區一和辦公區二位于同一園區。要求各大樓之間要互通&#xff0c;并且均能訪問Internet&#xff1b;同時公司業務需要對外拓展&#xff0c;需要在Internet數據中心機房部署一臺對外提供DNS和Web站點服務的服務器。…

8天Python從入門到精通【itheima】-41~44

目錄 41節-while循環的嵌套應用 1.學習目標 2.while循環的偽代碼和生活情境中的應用 3.圖片應用的代碼案例 4.代碼實例【Patrick自己親手寫的】&#xff1a; 5.whlie嵌套循環的注意點 6.小節總結 42節-while循環的嵌套案例-九九乘法表 1.補充知識-print的不換行 2.補充…