VPS Üzerinden PostgreSQL Performans Ayarları Nasıl Yapılır?

PostgreSQL, güçlü ve esnek bir veritabanı motorudur ancak varsayılan ayarlarla çalıştırıldığında çoğu VPS ortamında yeterli performansı gösteremez. VPS üzerindeki kaynakların sınırlı olduğu göz önüne alındığında, PostgreSQL’in performansını optimize etmek kritik hâle gelir.

Bu yazıda PostgreSQL’in postgresql.conf dosyasındaki temel performans ayarlarını ele alacak, örneklerle VPS ortamına uygun değerleri açıklayacağız.


1. shared_buffers – Bellek Paylaşımı

Bu ayar, PostgreSQL’in verileri RAM’de tutmasını sağlar. Doğrudan performansa etki eder.

  • Öneri: VPS RAM’inin %25–40’ı kadar bir değer.
  • Örnek: 4 GB RAM için shared_buffers = 1GB

RAM yetersizse bu değeri fazla artırmak, sistem takılmalarına yol açabilir.


2. work_mem – Sorgu İşlem Belleği

Her bir sorgu için ayrılan geçici bellek miktarıdır. JOIN ve sort işlemlerinde etkilidir.

  • Öneri: Yoğun sorgularda 4–16 MB arası ayar yapılabilir.
  • Örnek: work_mem = 8MB

Aynı anda çalışan sorgu sayısı kadar bellek kullanacağı unutulmamalıdır.


3. effective_cache_size – Tahmini Disk Cache Boyutu

PostgreSQL’in sorgu planlayıcısının, hangi verilerin disk yerine RAM’den okunabileceğini tahmin etmesini sağlar.

  • Öneri: VPS RAM’inin %50–75’i.
  • Örnek: effective_cache_size = 2GB

4. max_connections – Eşzamanlı Bağlantı Sınırı

Her bağlantı bir miktar RAM tüketir. Düşük trafikli VPS’lerde yüksek değer sorun yaratabilir.

  • Öneri: 50–100 arası.
  • Örnek: max_connections = 80

Daha fazlası gerekiyorsa PgBouncer gibi bağlantı havuzu yazılımları önerilir.


5. wal_buffers, checkpoint_segments, checkpoint_timeout

Veri bütünlüğü ve yazma performansı için önemlidir. Sık checkpoint işlemleri disk I/O’yu artırır.

  • wal_buffers = 16MB
  • checkpoint_timeout = 15min
  • checkpoint_completion_target = 0.9

Bu değerler daha stabil yazma işlemleri sağlar.


6. Autovacuum Ayarları

Veritabanı büyüdükçe, tablo temizliği önem kazanır. Ancak VPS’te fazla autovacuum işlemi CPU’yu zorlayabilir.

  • autovacuum = on (aktif kalmalı)
  • autovacuum_naptime = 60s
  • autovacuum_vacuum_cost_limit = 200

İhtiyaca göre daha agresif veya pasif hale getirilebilir.


7. Disk ve I/O Optimizasyonu

  • PostgreSQL verileri SSD disk üzerinde daha iyi performans verir.
  • fsync = on kalmalı (veri kaybına karşı)
  • VPS içinde disk IOPS sınırlıysa, sorgular optimize edilmelidir.

8. Loglama ve İzleme Ayarları

Performans sorunlarını anlamak için log_min_duration_statement gibi ayarlarla yavaş sorgular izlenmelidir:

log_min_duration_statement = 500  # 500ms üzeri sorgular loglanır
log_checkpoints = on
log_connections = on
log_lock_waits = on

9. PgTune ve Aracılar

Performans ayarlarını otomatik hesaplamak için pgtune.leopard.in.ua gibi araçlar kullanılabilir. VPS kaynak bilgilerinizi girerek örnek postgresql.conf ayarları alabilirsiniz.


Sonuç

VPS ortamında PostgreSQL performansını artırmak, sınırlı kaynakları doğru yapılandırmaya bağlıdır. Yukarıda belirtilen ayarlar doğrudan RAM, CPU ve disk kullanımını etkileyerek daha hızlı ve tutarlı sorgu sonuçları alınmasını sağlar. Her sistem farklı olduğu için ayarların test edilmesi ve izlenerek optimize edilmesi gerekir.

Vps.com.tr