在PostgreSQL中;說得連接池,立馬想到pgbouncer。pgbouncer 的目標(biāo)是降低因?yàn)樾陆ǖ?PostgreSQL/Greenplum 的連接而導(dǎo)致的性能損失。
在項(xiàng)目中;DBA會(huì)勸開發(fā)人員使用連接池。這樣可以控制連接數(shù)。也避免反復(fù)建立連接帶來的性能消耗。對(duì)連接池的優(yōu)點(diǎn)。這篇文章講解比較好。
但是在開發(fā)人員在使用連接池的過程中,一般開發(fā)人員那邊也有自己的jdbc的連接池。在啟動(dòng)項(xiàng)目的過程;于是出現(xiàn)下面這段對(duì)話
開發(fā)人員:這項(xiàng)目啟動(dòng)好慢;原因是連接數(shù)據(jù)庫好慢。
DBA:這項(xiàng)目啟動(dòng)時(shí)申請(qǐng)多少數(shù)據(jù)庫連接。
開發(fā)人員:沒多少;也就50。峰值不會(huì)超過400。
DBA:直連數(shù)據(jù)庫會(huì)慢嗎?
開發(fā)人員:不會(huì),啟動(dòng)很快。
連接池pgbouncer是一個(gè)針對(duì)PostgreSQL數(shù)據(jù)庫的輕量級(jí)連接池。但是單線程的。我觀察在啟動(dòng)的過程中;連接數(shù)是一條一條增加的。并不是你需要多少就給多少。
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
44
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
45
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
46
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
47
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
47
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
49
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
49
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
49
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
49
[postgres@bogon pgbouncer]$ ps -ef | grep postgres | grep 127 |wc -l
50
若是這樣的話;那我們知道為什么項(xiàng)目通過pgbouncer啟動(dòng)很慢了。
若我們提前申請(qǐng)一批連接資源做為idle。等項(xiàng)目啟動(dòng)的時(shí)候直接可以用不久解決了,說干就干。
在pgbouncer的配置文件中設(shè)置
min_pool_size = 50
|