PGbouncer

PgBouncer (https://pgbouncer.github.io/) это пулер соединений для PostgreSQL. Если планируется что к базам будет много одновременных коннектов, то необходимо настраивать пулер соединений, т.к. PostgreSQL на каждое соединение создает отдельный процесс и общая производительность СУБД начинает деградировать с увеличением числа коннектов. Если планируется более 500-1000 соединений, то настраивается пулер.

Установка

sudo apt-get install pgbouncer

Настраиваем

sudo vim /etc/pgbouncer/pgbouncer.ini
pgbouncer.ini

;;Указываем к какой базе данных нужен доступ, можно и не конкретизировать базу тогда балансировка будет на все базы

[databases]

testdb = host=127.0.0.1 port=5432 dbname=testdb

;;Необходима иначе будет ошибка при подключение

ignore_startup_parameters = extra_float_digits

;; IP address or * which means all IPs Ну вы поняли
listen_addr = 0.0.0.0
listen_port = 5432

;;Необходима для включение механизма авторизации при методе trust pgbouncer будет пускать всех без пароля.

auth_type = md5

;;По умолчанию стоит в session, то есть, сессия будет удерживаться клиентом до тех пор, пока он не закроет соединение. Чаще всего значение имеет смысл заменить на transaction. В этом случае соединение будет возвращаться в общий пул после завершения транзакции. Значение statement означает, что соединение будет освобождаться после выполнения каждого отдельного выражения, чего вы почти наверняка не должны хотеть.

pool_mode = transaction

max_client_conn = 1000

;; Default pool size. 20 is good number when transaction pooling
;; is in use, in session pooling it needs to be the number of
;; max clients you want to handle at any moment
default_pool_size = 40

;; Minimum number of server connections to keep in pool.
;min_pool_size = 0

; how many additional connection to allow in case of trouble
reserve_pool_size = 10

[свернуть]

Указано только минимальное количество настроек которые я поменял или добавил, но инструмент мощный нужно читать. 

Настроим пользователя для подключения pgbouncer к pgsql

Получаем md5 hash от необходимого нам пользователя

sudo -u postgres psql
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# select * from pg_shadow;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
-----------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------
postgres | 10 | t | t | t | t | | |
testuser | 16384 | f | f | f | f | md55450gfd9g049t034t954 | |
(2 rows)

И правим файл с пользователями

sudo vim /etc/pgbouncer/userlist.txt

Добавляем пользователя

"testuser" "md55450gfd9g049t034t954"

Рестартим pgbouncer

sudo service pgbouncer restart

Добавить комментарий 0