PgBouncer kasutamine operatsioonisüsteemiga Debian

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

PgBouncer https://pgbouncer.github.io/ on andmebaasi ühenduste fondeerija (ingl. k. connection pooler).

Tööpõhimõte

PgBounceri kasutamise kasu tuleneb sellest, et andmebaasi kliendid teevad suhteliselt palju ühendumisi PgBounceri vastu, kuid PgBouncer teeb ühendumisi andmebaasi enda külge suhteliselt vähe, klientide jaoks kasutatakse olemasolevaid ühendusi. Osutub, et andmebaasiga ühenduse tegemine on arvestatava hinnaga tegevus ja selle pealt on mõtet kokku hoida.

PgBouncer kasutab kolme erinevat fondeerimise viisi

  • Session pooling - soovitatakse üldiselt kasutada
  • Transaction pooling
  • Statement pooling

Ettevalmistused

PgBounceri kasutamine eeldab libevent teegi olemasolu süsteemis. Otseselt on vaja sellega tegeleda, kui otsustatakse PgBouncer süsteemi paigaldada lähtetekstist.

Paigaldamine

Tarkvara paigaldamiseks Debian keskkonnas sobib öelda

# apt-get install pgbouncer

Paigaldatakse muu seas sellised failid

/usr/sbin/pgbouncer
/etc/default/pgbouncer
/etc/pgbouncer/pgbouncer.ini
/etc/pgbouncer/userlist.txt
/etc/init.d/pgbouncer

Seadistamine ja käivitamine

Tarvara tööd kontrollivad seadistusfailid

  • /etc/pgbouncer/pgbouncer.ini, mille sisu võiks olla nt
# egrep -v "^$|^;" /etc/pgbouncer/pgbouncer.ini
[databases]
test = host=127.0.0.1 dbname=test

[pgbouncer]
logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid
listen_addr = *
listen_port = 6432
unix_socket_dir = /var/run/postgresql
auth_type = trust
auth_file = /etc/pgbouncer/userlist.txt
admin_users = postgres
stats_users = postgres
pool_mode = session
server_reset_query = 
server_check_query = select 1
server_check_delay = 10
max_client_conn = 100
default_pool_size = 20
log_connections = 1
log_disconnections = 1
log_pooler_errors = 1
  • /etc/pgbouncer/userlist.txt sisaldab nt
"postgres" "parool"

Käivitamiseks peab olema failis /etc/default/pgbouncer rida

START=1

ja tuleb öelda

# /etc/init.d/pgbouncer start

Töötab üks protsess

$ ps aux | grep pgbouncer | grep -v grep
postgres  8730  0.0  0.2  17108  1016 ? S 11:46   0:00 /usr/sbin/pgbouncer -d /etc/pgbouncer/pgbouncer.ini

Debian Lenny

  • Lisada süsteemi kasutaja:grupp pgbouncer:pgbouncer
  • tekitada kataloogid /var/log/pgbouncer ja /var/run/pgbouncer
  • Kasutada seadistusfailis
logfile = /var/log/pgbouncer/pgbouncer.log
pidfile = /var/run/pgbouncer/pgbouncer.pid
  • kasutada seadistusfaili
/usr/local/pgbouncer/etc/userlist.txt
  • Kasutada nt sellist kävitusskripti
$ cd /usr/local/pgbouncer/
$ /usr/local/pgbouncer/bin/pgbouncer /etc/pgbouncer/pgbouncer.ini

Kasutamine

PgBouceri kasutamiseks tuleb ühenduda PgBounceri porti, nt 192.168.10.205:6432 ja kasutada seda nagu tavalist andmebaasi.

Haldamine

PgBounceri haldamiseks sobib kasutada andmebaasi pgbouncer, nt

$ psql -h 127.0.0.1 -p 6432 -U postgres pgbouncer -c 'show databases;'
   name    |   host    | port | database  | force_user | pool_size | reserve_pool 
-----------+-----------+------+-----------+------------+-----------+--------------
 pgbouncer |           | 6432 | pgbouncer | pgbouncer  |         2 |            0
 test      | 127.0.0.1 | 5432 | test      |            |        20 |            0

(2 rows)

Märkused

  • Otse andmebaasi kasutamisel toimub peale ühenduse loomist päringu esitamine nö puhtalt kohalt, kompileeritakse funktsioonid, koostatakse query plan, plperl kasutamisel algväärtustatake globaalsed muutujad. PgBounceri kasutamisel sooritataskse need tegevused korra ühe PgBoucerist baasi mineva ühenduse jaoks ja edaspidi kasutatakse sama ühendust. Kasutaja peab ise hindama, kas sellest asjaolust võib rakenduse kasutamisel mingit häda tekkida.

Kasulikud lisamaterjalid