1. 程式人生 > >HikariCP重要引數配置

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))