Database connection pool 在應用系統中是個普遍會採用的設定,使用 Connection pool 的好處就像使用環保餐具一樣,用過的 Connection 不丟棄 注,每次重新建立 Database Connection 的成本太大,所以應用系統中通常都會設定 Database Connection Pool。
Database connection pool 可以從 Application 設定,也可以從 AP Server 來設定,如果在 Application 設定,通常使用 DBCP,如果讓各 AP Server 來設定,那設定方式可能就有些不一樣。
最近使用 JBoss 來設定 Database connection pool 的時候,發現有這麼一個情形,如果 Database shutdown 以後, connection pool 並不會自己重新 reconnect,直到重啟 Server 為止。後來才知道,原來 JBoss EAP Connection pool 的設定不特別設定,是不會自己重連的。
Connection Pool Validation 設定
- Valid Connection Checker - 各家 Database 對於 Connection Valid 的機制可能有一些差異,所以會有不同的 Checker。
- Oracle:
org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
- SQLServer:
org.jboss.jca.adapters.extensions.mssql.MSSQLValidConnectionChecker
- Oracle:
- Check Valid SQL - 用來檢查 Connection 是否正常運作的 SQL。
- Valid on match - 已經接上的 Connection 是否需要檢查,這個值似乎在
Background Validation
出現後,就不是這麼需要在意了,預設為True
。 - Background Validation - 這是新版 JBoss (After 4.0.5) 才有的設定值,在處理 Valid Connection 的時候,會開另外一個 Thread 來處理,如果設定了
Validation Mills
那這個值就必須為True
。 - Validation Mills - 多久檢查一次。