среда, 2 ноября 2011 г.

PgBouncer легкий пул коннектов для PostgreSQL

Преимущество использования пула коннектов это существенное снижение нагрузки на Postgresql сервера, такие дорогостоящие для сервера действия как постоянное открытие/закрытие коннектов, общее управление коннектами, частично ложатся на плечи Pgbouncer. Кроме этого важен тот дополнительный функционал, которые привносит Pgbouncer сам по себе.

Достоинства Pgbouncer

  • Малое потребление оперативной памяти
  • Отсутствие жесткой привязки к одному backend серверу, соответственно сервера назначения могут располагаться на разных хостах
  • Поддержка реконфигурации большинства настроек без перезапуска
  • Поддержка онлайн перезапуска

Установка

(ОС: Debian 6.0 x64)

apt-get install pgbouncer

самый простой пример настроек /etc/pgbouncer/pgbouncer.ini для доступа к БД of_db под именем pseudo_db в пуле

[databases]
pseudo_db = host=127.0.0.1 port=5432 dbname=of_db

[pgbouncer]
listen_addr = 0.0.0.0
listen_port = 6432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
admin_users = pgb_admin

добавляем пользователя в файл /etc/pgbouncer/userlist.txt, логин и пароль необходимо указывать точно такие же как и у реальных аккаунтов в Postgresql

"postgres" "md553f48b7c4b76a86ce72276c5755f217d"

включаем в /etc/default/pgbouncer сам Pgbouncer

START=1

запускаем его

invoke-rc.d pgbouncer start

проверяем его работу, коннектимся Postgresql клиентом к пулу, если все хорошо, то выходим и смотрим процессы и сетевую активность. Несмотря на то что мы отключились Pgbouncer продолжает поддерживать коннект к серверу, продолжительность поддержки коннекта зависит от настроек Pgbouncer

postgres  4030  0.0  0.1 102280  1524 ?        Ss   12:23   0:00  \_ postgres: wal writer process
postgres  4031  0.0  0.1 102556  1892 ?        Ss   12:23   0:00  \_ postgres: autovacuum launcher process
postgres  4032  0.0  0.1  73960  1572 ?        Ss   12:23   0:00  \_ postgres: stats collector process
postgres  5478  0.0  0.3 103608  4840 ?        Ss   13:36   0:00  \_ postgres: postgres of_db 127.0.0.1(38636) idle

tcp        0      0 127.0.0.1:38636         127.0.0.1:5432          ESTABLISHED 5217/pgbouncer

Комментариев нет:

Отправить комментарий