Pythontr

husonet | Tarih: 19.08.2024

PgBouncer Nasıl Kurulur ve Yapılandırılır: Adım Adım Kılavuz

PgBouncer Nasıl Kurulur ve Yapılandırılır: Adım Adım Kılavuz

Bu makalede, PostgreSQL bağlantılarını yönetmek ve optimize etmek için kullanılan PgBouncer'ın adım adım kurulumu ve yapılandırması anlatılmaktadır. PgBouncer ile yüksek performanslı ve verimli veritabanı bağlantıları nasıl oluşturulur, detaylı olarak inceleyeceksiniz.

PgBouncer, PostgreSQL veritabanı bağlantılarını yönetmek ve optimize etmek için kullanılan hafif bir bağlantı havuzu aracıdır. PgBouncer, özellikle yüksek sayıda eşzamanlı bağlantıyı desteklemek ve PostgreSQL sunucusunun yükünü azaltmak için faydalıdır. Veritabanı bağlantıları üzerinde önemli bir performans iyileştirmesi sağlar, bu da PostgreSQL'in daha verimli çalışmasını sağlar.


PgBouncer'in Avantajları



  • Bağlantı Havuzu: PgBouncer, istemcilerin aynı anda açtığı bağlantıları havuza alarak, PostgreSQL'in max_connections sınırını zorlamadan daha fazla bağlantıyı işleyebilir.
  • Bağlantı Yeniden Kullanımı: PgBouncer, açık olan bağlantıları yeniden kullanarak, her bağlantı için gerekli olan kaynakları azaltır ve sunucunun yanıt süresini hızlandırır.
  • Kaynak Tüketimini Azaltma: PostgreSQL bağlantıları, işlemci ve bellek açısından pahalıdır. PgBouncer, PostgreSQL bağlantılarını minimumda tutarak kaynak tüketimini optimize eder.
  • Daha Az Bellek Kullanımı: PostgreSQL'in her bağlantı için ayırdığı bellek miktarını azaltarak, daha verimli bir bellek yönetimi sağlar.

PgBouncer Kurulumu ve Yapılandırması


Kurulum için aşağıdaki adımları takip edebilirsiz.



su -
apt update
apt install pgbouncer

PgBouncer Yapılandırması


PgBouncer yapılandırma dosyası genellikle /etc/pgbouncer/pgbouncer.ini yolunda bulunur. Bu dosyayı düzenleyerek PgBouncer'in nasıl çalışacağını belirleyebilirsiniz.



[databases]
* = port=5432

[pgbouncer]
listen_addr = 0.0.0.0
listen_port = 6432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = session
max_client_conn = 1000
default_pool_size = 200
reserve_pool_size = 20
reserve_pool_timeout = 5
server_idle_timeout = 300
logfile = /var/log/pgbouncer/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid

databases: Burada, PgBouncer'ın yönetmesini istediğiniz veritabanlarını tanımlarsınız.


listen_addr ve listen_port: PgBouncer'ın hangi adres ve port üzerinde dinleyeceğini belirler. 6432 yaygın olarak kullanılan bir porttur.


auth_type ve auth_file: Yetkilendirme tipi ve kullanıcı/şifre bilgilerini tutan dosya yolunu belirler.


pool_mode: Bağlantı havuzlama modunu belirler. session, transaction, ve statement modları bulunur. session modu, istemci oturumlarıyla eşleşen havuzlama sağlar.


max_client_conn: PgBouncer tarafından kabul edilen maksimum istemci bağlantı sayısıdır.


default_pool_size: Her veritabanı için ayrılan varsayılan bağlantı havuzu boyutudur.


reserve_pool_size ve reserve_pool_timeout: Yoğun kullanım anlarında ek bağlantı taleplerini karşılamak için yedek bağlantı havuzu boyutunu ve zaman aşımını belirler.


server_idle_timeout: Kullanılmayan bağlantıların ne kadar süre sonra kapatılacağını belirler.


Yetkilendirme Dosyasını Ayarlayın



psql -Atq -h localhost -p 5432 -U postgres -d postgres -c "SELECT concat('\"', usename, '\" \"', passwd, '\"') FROM pg_shadow" >> /etc/pgbouncer/userlist.txt

Yukarıdaki SQL kodu işimizi kolaylaştıracaktır, normal şartlarda /etc/pgbouncer/userlist.txt bu dosya üzerinde manual olarakta ayarlayabilirsiniz.



"hks_admin" "md5<hashed_password>"

Postgresql yapılandırması PgBouncer için


Bu dosya üzerinde /etc/postgresql/15/main/pg_hba.conf aşağıdaki düzenlemeleri yapalım.



/etc/postgresql/15/main/pg_hba.conf

Servisleri restart yapabiliriz


[code]
#local all all peer
local all all md5
# IPv4 local connections:
#host all all 127.0.0.1/32 scram-sha-256
host all all 127.0.0.1/32 md5
# IPv6 local connections:
#host all all ::1/128 scram-sha-256
host all all ::1/128 md5

Test etmek için



psql -U username -d database -h localhost -p 6432

Bu konfigürasyon 16 core işlemci, 48 gb ram ve 240GB SSD li makina için yapılmıştır.