配置 | 預設值 | 說明 |
alias | N/A | 用於設定串連池別名。可以用於標識一個串連池,在多個串連池的情況下很有用。 |
driver-class | N/A | 用於設定資料庫驅動程式類名。 |
driver-url | N/A | 用於設定資料庫連接 URL,包括主機 IP、連接埠號碼、需要訪問的 Schema 和可選的資料庫驅動參數。 |
username | N/A | 用於設定資料庫使用者名稱。 |
password | N/A | 用於設定資料庫密碼。 |
maximum-connection-count | 15 | 用於設定串連池的最大串連數。預設值為 15,表示串連池最多可以建立 15 個串連。 |
minimum-connection-count | 5 | 用於設定串連池的最小串連數。預設值為 5,表示串連池將始終保持至少 5 個串連。 |
prototype-count | 0 | 用於設定串連池的原型串連數。預設值為 0,表示串連池不會主動建立額外的串連。 與minimum-connection-count 不同的是,prototype-count 這個屬性會考慮當前活動串連的數量。如果可用串連數少於設定的prototype-count ,串連池會建立更多的串連(前提是未達到最大串連數)。例如,如果有 3 個活動串連和 2 個可用串連,但prototype-count 設定為 4,那麼串連池將嘗試建立另外 2 個串連。 prototype-count 的目的是在當前活動串連的基礎上維持一定數量的備用串連。這些備用串連可以避免在高負載期間由於串連池中可用串連不足而導致的串連請求被阻塞。通過建立更多的串連,串連池可以更好地應對並發請求,提高應用程式的效能和響應速度。
在調整這個屬性時,需要考慮應用程式的並發需求和資料庫的配置。如果應用程式預計會有較高的並發請求,可以適當增加prototype-count ;如果應用程式的並發請求較少,可以將該屬性設定為 0,以減少資源消耗。 |
verbose | false | 用於設定串連池的詳細輸出模式。預設值為false ,即安靜模式。 當verbose 屬性設定為true 時,串連池將輸出更詳細的資訊,以便開發人員進行調試和監控。這些資訊可能包括串連池的狀態、串連的建立和釋放、串連的使用方式等。 開啟verbose 模式可以協助開發人員更好地瞭解串連池的運行情況,以及檢查串連的分配和回收是否正常。這對於排查串連泄漏、效能問題和調優非常有用。 在生產環境中,通常不建議將verbose 設定為true ,因為它會產生大量的輸出資訊,可能影響系統的效能和記錄檔的大小。通常情況下,建議將verbose 設定為false ,只在需要時臨時開啟以進行調試和監控。 |
statistics | null | 用於配置統計資訊的採樣長度,即串連池使用狀況統計。採樣長度可以設定為以逗號分隔的時間單位,例如10s,15m 表示每 10 秒和每 15 分鐘採樣一次。可用的單位有s (秒)、m (分鐘)、h (小時)和d (天)。預設值為null ,表示不採集統計資訊。 當設定statistics 屬性時,串連池將定期採樣串連池的統計資訊,如活動串連數、空閑串連數、串連請求數等。採樣長度決定了統計資訊的粒度和採樣頻率。 |
statistics-log-level | null | 用於設定統計資訊的記錄層級,即日誌統計跟蹤類型。可選的記錄層級有DEBUG 、INFO 、WARN 、ERROR 和FATAL 。預設值為null ,表示不記錄統計資訊日誌。 當設定了statistics-log-level 屬性後,串連池會將產生的統計資訊以指定的記錄層級記錄下來。這些統計資訊可以包括串連池的狀態、串連的建立和釋放、串連的使用方式等。 |
test-after-use | N/A | 用於設定串連在關閉後是否進行測試。如果將該屬性設定為true ,並且定義了house-keeping-test-sql 屬性,那麼每個串連在關閉(即返回到串連池)後都會進行測試。如果串連測試失敗,則該串連會被丟棄。 串連池中的串連在使用完畢後通常會被放回串連池中以供重複使用。test-after-use 屬性的作用是在串連放回串連池後,對該串連進行測試,以確保串連的可用性和有效性。串連測試通常使用house-keeping-test-sql 屬性指定的 SQL 陳述式。 通過開啟test-after-use 功能,串連池可以及時檢測到停用串連,並將其從串連池中移除,以避免應用程式擷取到無效的串連。這可以提高應用程式的穩定性和可靠性。 需要注意的是,為了使用test-after-use 功能,需要預先設定好house-keeping-test-sql 屬性,該屬性用於定義串連測試所使用的 SQL 陳述式。這樣串連池才能根據house-keeping-test-sql 定義的規則來對串連進行測試和判斷。 |
house-keeping-test-sql | N/A | 用於設定串連池中空閑串連的測試 SQL 陳述式。當串連池的管家線程發現有空閑串連時,會使用該 SQL 陳述式對這些串連進行測試。測試 SQL 陳述式應該是非常快速執行的,例如檢查當前日期等操作。如果沒有定義該屬性,則不進行串連測試。MySQL 模式可用SELECT CURRENT_DATE 或者SELECT 1 。Oracle 模式可用SELECT sysdate FROM DUAL 或者SELECT 1 FROM DUAL 。 |
trace | false | 用於設定是否記錄每個 SQL 調用的日誌資訊。當設定為true 時,每個 SQL 調用將被記錄在日誌中(DEBUG 層級),並顯示執行時間。也可以通過註冊ConnectionListener (參見ProxoolFacade )來擷取這些資訊。預設值為false 。 開啟trace 功能可能會產生大量的日誌輸出,特別是在高並發和頻繁 SQL 調用的情況下。在生產環境中,建議謹慎使用,以避免產生過多的日誌和對系統效能造成不必要的影響。 |
maximum-connection-lifetime | 4 小時 | 用於設定串連的最大生命週期。即串連在被銷毀之前存在的最長時間(單位為毫秒)。預設值為 4 小時。 串連的生命週期是指串連從建立到銷毀的時間段。通過設定maximum-connection-lifetime 屬性,可以限制串連在串連池中存在的最長時間,以避免串連過久未使用或出現資源泄漏的情況。 |
maximum-active-time | 5 分鐘 | 用於設定線程的最大啟用時間。當串連池的管家線程發現某個線程的啟用時間超過此設定時,它將終止該線程。因此,請確保將此屬性設定為大於預期最慢回應時間的值。預設值為 5 分鐘。 守護進程會把串連池中多餘的可用線程(未用的、超過這個時間的)終止,最終保留的串連數量就是minimum-connection-count 規定的數量。守護進程會根據house-keeping-sleep-time 參數設定的時間隔定時檢查。 |
maximum-new-connections | N/A | 用於設定串連池每次同時建立的最大新串連數。該屬性已被棄用(Deprecated)。建議使用simultaneous-build-throttle 屬性替代。 |
simultaneous-build-throttle | 10 | 用於設定在任何時刻串連池可以同時建立的最大串連數。也就是說,即將建立但尚未可用的新串連數的上限。因為串連的建立可能使用多個線程(例如按需建立串連時),並且在決定建立串連和串連可用之間需要一定的時間,所以我們需要一種方式來確保不會同時有大量線程決定建立串連。 simultaneous-build-throttle 屬性的作用是限制串連池同時建立新串連的數量,以控制串連池的並發性。當達到最大並發串連數時,進一步請求新串連的線程將被阻塞,直到有可用的串連或超過指定的逾時時間。
通過設定適當的simultaneous-build-throttle 屬性,可以平衡串連池的並發性和資源消耗。預設值為 10,意味著串連池可以同時建立的最大串連數為 10。 |
overload-without-refusal-lifetime | 60 | 用於協助確定串連池的狀態。如果在指定的時間閾值內(單位為毫秒)拒絕了串連請求,則表示串連池處於過載狀態。預設值為 60 秒。 |
test-before-use | N/A | 用於設定是否在提供串連之前對每個串連進行測試。如果將該屬性設定為true ,則在嚮應用程式提供串連之前,每個串連都會通過執行預定義的測試 SQL(由house-keeping-test-sql 屬性定義)進行測試。如果串連測試失敗,則該串連將被丟棄,串連池將選擇另一個可用的串連。如果所有串連都測試失敗,則會建立一個新的串連。如果新串連測試失敗,則會拋出SQLException 。 需要注意一點,對於 MySQL 資料庫還必須在串連參數裡加上autoReconnect=true 參數,否則即使開啟了test-before-use 參數,仍然不能重串連。 |
fatal-sql-exception | null | 用於配置 SQL 異常的檢測和處理。它是一個逗號分隔的訊息片段列表。當發生SQLException 時,它的訊息會與這些訊息片段進行比較。如果它包含任何一個訊息片段(區分大小寫),則被視為致命的 SQL 異常。這將導致串連被丟棄。無論發生什麼情況,異常都會被重新拋出,以便使用者瞭解發生了什麼。您還可以選擇配置不同的異常被拋出(參見fatal-sql-exception-wrapper-class 屬性)。預設值為null 。 需要注意的是,如果設定了fatal-sql-exception-wrapper-class 屬性,可以配置一個替代的異常類來拋出。這樣可以自訂處理 SQL 異常的方式。 |
fatal-sql-exception-wrapper-class | null | 用於配置致命 SQL 異常的異常封裝。當配置了fatal-sql-exception 屬性時,預設行為是丟棄導致致命SQLException 的異常,並將原始異常直接拋給使用者。使用該屬性,您可以將SQLException 封裝在另一個異常中。這個異常可以是任何您想要的,只要它繼承自SQLException 或RuntimeException 。Proxool 提供了兩個類供您使用,如果您不想自己構建異常類的話:FatalSQLException 和FatalRuntimeException 。要使用這些類,您應該根據需要將該屬性設定為org.logicalcobwebs.proxool.FatalSQLException 或org.logicalcobwebs.proxool.FatalRuntimeException 。預設值為null ,表示不封裝致命SQLException 。預設值為 null。 需要注意的是,異常封裝類必須是SQLException 或RuntimeException 的子類。 |
house-keeping-sleep-time | 30秒 | 用於設定串連池的維護線程(house keeping thread)的休眠時間。維護線程負責檢查所有串連的狀態,判斷是否需要銷毀或建立串連。預設值為 30 秒,意味著維護線程將每隔 30 秒執行一次維護任務。 |
injectable-connection-interface | N/A | 用於允許 Proxool 實現委託 Connection 對象中定義的方法。 |
injectable-statement-interface | N/A | 用於允許 Proxool 實現委託 Statement 對象中定義的方法。 |
injectable-prepared-statement-interface | N/A | 用於允許 Proxool 實現委託 PreparedStatement 對象中定義的方法。 |
injectable-callable-statement-interface | N/A | 用於允許 Proxool 實現委託 CallableStatement 對象中定義的方法。 |
jndi-name | N/A | 用於指定串連池在 JNDI (Java Naming and Directory Interface) 中註冊的名稱。 |