PgBouncer kasutamine operatsioonisüsteemiga Debian
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.