亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

pgbouncer -- pg數據庫連接管理工具

2024-06-03 09:18:02
49
0

pgbouncer

在微服務架構中,每個微服務提供一項功能邏輯的處理,他們之間通過API交互,一般每個微服務或多或少需要與數據庫交互,每個微服務配置了DAO連接池。如果后端微服務較多,數據庫上默認創建的連接數量就有可能太多(微服務熟練×連接池配置的連接數量)。微服務的增加也會導致數據庫的連接的增加,即便大多數情況連接池空閑,也會導致數據庫端占用資源過多。

將連接池的配置遷移到數據庫端統一管理,pgbouncer是postgreSQL的輕量級連接池管理工具,可以有效提高連接的利用率,避免過多無效連接占用資源過多的情況,同時也能對客戶端連接進行限制,避免過多連接或惡意請求。

service1 -----> postgre <----- service3
                   ^
                   |
                service2


service1 ----->
service2 ----->  pgbouncer -----> postgre
service3 ----->

pg是多進程結構,每增加一個session,pg會創建一個新建進程去處理會話,而pgbouncer能夠預先緩存pg的連接,當有連接請求進來的時候,直接分配pgbouncer與pg之間的空閑連接去執行,而不需要pg創建新的連接,以節省創建新的進程所消耗的時間和資源。

另外pgbouncer是使用libevent進行socket通信,效率高,開銷小,每個連接僅占用2kB內存。

pgbouncer支持三種連接池模式:

  1. session:這種模式和本質上直接與pg連接的方式基本一致。
  2. transaction:最常用的模式,一個連接的通道時分被事務所使用,當客戶端發出事務請求后,pgbouncer會在與數據庫之間的連接中找到一個連接是idle的去執行,當事務完成后,連接將重新被pgbouncer交給其他新事務去使用。
  3. sql:類似于autoconmiit,粒度較細,一條sql執行完就釋放連接,這條連接可能會被其他會話占用掉,這種方式比較節約資源,但破壞了事務的邏輯,需要評估應用系統中是否需要事務連接。

pgbouncer的使用

# 安裝
# centos7
yum install -y openssl openssl-devel libevent libevent-devel
wget //www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz
tar -zxvf pgbouncer-1.20.0.tar.gz
cd pgbouncer-1.20.0
./configure --prefix=/usr/local/
make && make install

# 配置
mkdir -p /etc/pgbouncer
vi /etc/pgbouncer/pgbouncer.ini

[databases]
template1 = host=10.150.57.9 port=5432 dbname=postgres user=postgres

[pgbouncer]
listen_port = 6432
listen_addr = 10.150.57.9
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
logfile = /etc/pgbouncer/pgbouncer.log
pidfile = /etc/pgbouncer/pgbouncer.pid
admin_users = postgres
stats_users = pgmon
server_reset_query = DISCARD ALL
server_check_query = select 1
server_check_delay = 30
max_client_conn = 5000
default_pool_size = 20
reserve_pool_size = 5
dns_max_ttl = 15

vi /etc/pgbouncer/userlist.txt
"postgres" "Psswd@123"
"gaoyu" "Passwd@123"

# 啟動
pgbouncer -d /etc/pgbouncer/pgbouncer.ini

# 使用
psql -h 10.150.57.9 -p 6432 -U postgres template1
0條評論
0 / 1000
cactusii
15文章數
0粉絲數
cactusii
15 文章 | 0 粉絲
原創

pgbouncer -- pg數據庫連接管理工具

2024-06-03 09:18:02
49
0

pgbouncer

在微服務架構中,每個微服務提供一項功能邏輯的處理,他們之間通過API交互,一般每個微服務或多或少需要與數據庫交互,每個微服務配置了DAO連接池。如果后端微服務較多,數據庫上默認創建的連接數量就有可能太多(微服務熟練×連接池配置的連接數量)。微服務的增加也會導致數據庫的連接的增加,即便大多數情況連接池空閑,也會導致數據庫端占用資源過多。

將連接池的配置遷移到數據庫端統一管理,pgbouncer是postgreSQL的輕量級連接池管理工具,可以有效提高連接的利用率,避免過多無效連接占用資源過多的情況,同時也能對客戶端連接進行限制,避免過多連接或惡意請求。

service1 -----> postgre <----- service3
                   ^
                   |
                service2


service1 ----->
service2 ----->  pgbouncer -----> postgre
service3 ----->

pg是多進程結構,每增加一個session,pg會創建一個新建進程去處理會話,而pgbouncer能夠預先緩存pg的連接,當有連接請求進來的時候,直接分配pgbouncer與pg之間的空閑連接去執行,而不需要pg創建新的連接,以節省創建新的進程所消耗的時間和資源。

另外pgbouncer是使用libevent進行socket通信,效率高,開銷小,每個連接僅占用2kB內存。

pgbouncer支持三種連接池模式:

  1. session:這種模式和本質上直接與pg連接的方式基本一致。
  2. transaction:最常用的模式,一個連接的通道時分被事務所使用,當客戶端發出事務請求后,pgbouncer會在與數據庫之間的連接中找到一個連接是idle的去執行,當事務完成后,連接將重新被pgbouncer交給其他新事務去使用。
  3. sql:類似于autoconmiit,粒度較細,一條sql執行完就釋放連接,這條連接可能會被其他會話占用掉,這種方式比較節約資源,但破壞了事務的邏輯,需要評估應用系統中是否需要事務連接。

pgbouncer的使用

# 安裝
# centos7
yum install -y openssl openssl-devel libevent libevent-devel
wget //www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz
tar -zxvf pgbouncer-1.20.0.tar.gz
cd pgbouncer-1.20.0
./configure --prefix=/usr/local/
make && make install

# 配置
mkdir -p /etc/pgbouncer
vi /etc/pgbouncer/pgbouncer.ini

[databases]
template1 = host=10.150.57.9 port=5432 dbname=postgres user=postgres

[pgbouncer]
listen_port = 6432
listen_addr = 10.150.57.9
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
logfile = /etc/pgbouncer/pgbouncer.log
pidfile = /etc/pgbouncer/pgbouncer.pid
admin_users = postgres
stats_users = pgmon
server_reset_query = DISCARD ALL
server_check_query = select 1
server_check_delay = 30
max_client_conn = 5000
default_pool_size = 20
reserve_pool_size = 5
dns_max_ttl = 15

vi /etc/pgbouncer/userlist.txt
"postgres" "Psswd@123"
"gaoyu" "Passwd@123"

# 啟動
pgbouncer -d /etc/pgbouncer/pgbouncer.ini

# 使用
psql -h 10.150.57.9 -p 6432 -U postgres template1
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0