天天看點

hikari配置斷開重連_HikariCP重要參數配置

概述

HikariCP是Spring Framework 5.0的預設資料庫連接配接池,這得益于他的高性能。但是如果配置不當,資料庫連接配接池也可能因影響到系統性能。

重要參數

maximum-pool-size

minimum-idle

pool-name

auto-commit

idle-timeout

max-lifetime

connection-timeout

初始化過程和連接配接建立邏輯

當HikariCP初始化時候,會将添加連接配接到池中,直到達到minimum-idle的數量,此時保持這個狀态。當有新的連接配接池請求時,HikariCP會傳回一個connection的代理。當connection都處于使用狀态時,若此時有新的連接配接池請求,HikariCP就會繼續建立connection直到達到maximun-pool-size。

maximum-pool-size

池中最大連接配接數(包括空閑和正在使用的連接配接)。預設值是10,這個一般預估應用的最大連接配接數,後期根據監測得到一個最大值的一個平均值。要知道,最大連接配接并不是越多越好,一個connection會占用系統的帶寬和存儲。但是 當連接配接池沒有空閑連接配接并且已經到達最大值,新來的連接配接池請求(HikariPool#getConnection)會被阻塞直到connectionTimeout(毫秒),逾時後便抛出SQLException。

minimum-idle

池中最小空閑連接配接數量。預設值10,小于池中最大連接配接數,一般根據系統大部分情況下的資料庫連接配接情況取一個平均值。Hikari會盡可能、盡快地将空閑連接配接數維持在這個數量上。如果為了獲得最佳性能和對峰值需求的響應能力,我們也不妨讓他和最大連接配接數保持一緻,使得HikariCP成為一個固定大小的資料庫連接配接池。

pool-name

連接配接池的名字。一般會出現在日志和JMX控制台中。預設值:auto-genenrated。建議取一個合适的名字,便于監控。

auto-commit

是否自動送出池中傳回的連接配接。預設值為true。一般是有必要自動送出上一個連接配接中的事物的。如果為false,那麼就需要應用層手動送出事物。

idle-timeout

空閑時間。僅在minimum-idle小于maximum-poop-size的時候才會起作用。預設值10分鐘。根據應用實際情況做調整,對于一些間歇性流量達到峰值的應用,一般需要考慮設定的比間歇時間更大,防止建立資料庫連接配接拖慢了應用速度。

max-lifetime

連接配接池中連接配接的最大生命周期。當連接配接一緻處于閑置狀态時,資料庫可能會主動斷開連接配接。為了防止大量的同一時間處于空閑連接配接因為資料庫方的閑置逾時政策斷開連接配接(可以了解為連接配接雪崩),一般将這個值設定的比資料庫的“閑置逾時時間”小幾秒,以便這些連接配接斷開後,HikariCP能迅速的建立新一輪的連接配接。

connection-timeout

連接配接逾時時間。預設值為30s,可以接收的最小逾時時間為250ms。但是連接配接池請求也可以自定義逾時時間(com.zaxxer.hikari.pool.HikariPool#getConnection(long))。