husonet | Tarih: 19.08.2024
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.