Connection pool ayarı, “ne kadar yüksek o kadar iyi” değildir. Veritabanı bağlantı limiti, eşzamanlı istek, sorgu süresi ve uygulama instance sayısına göre havuz boyutunu hesaplamayı; timeout, izleme ve maliyet kontrolünü öğrenin.
Doğru connection pool boyutu, rastgele yüksek bir değer seçmekle değil; veritabanı bağlantı limiti, uygulama instance sayısı ve gerçek bekleme verileri birlikte değerlendirilerek belirlenir. Pool büyütmek ancak bağlantı beklemesi varsa ve veritabanı kaynakları bunu kaldırabiliyorsa anlamlıdır.
Küçük bir uygulamada sade izleme ve kontrollü ayar yeterli olabilir. Büyüyen SaaS sistemlerinde, container tabanlı yapılarda veya birden çok uygulama sunucusunda ise toplam bağlantı sayısını merkezi olarak planlamak gerekir.
Yavaş sorgular, kilit beklemeleri ve connection leak sorunları havuzun dolu görünmesine yol açabilir. Bu nedenle ilk adım yeni bağlantı eklemek değil, darboğazın havuzda mı yoksa veritabanı tarafında mı olduğunu ölçmektir.
Managed database paketi, bulut sunucu kaynağı veya APM izleme aracı seçimi de bu ölçümlere göre yapılmalıdır. Böylece gereksiz kapasite maliyeti ile ani trafik altında kesinti riski arasında daha dengeli bir karar verilebilir.
Java, .NET, Node.js ve benzeri ortamlarda kullanılan pool kütüphanelerinin varsayılanları farklı olabilir. Nihai değerleri, kullandığınız sürümün resmi belgeleri ve üretim benzeri test sonuçlarıyla doğrulamak önemlidir.
Bir Bakışta
- Pool boyutu, veritabanının bağlantı limiti ve tüm uygulama instance’larının toplamı üzerinden planlanmalıdır.
- Yüksek aktif bağlantı ile birlikte bekleyen istekler görülüyorsa, önce sorgu gecikmesi ve kilitleri inceleyin.
- Managed database veya daha güçlü sunucu paketi seçmeden önce bağlantı, sorgu ve kaynak metriklerini karşılaştırın.
| Kurulum tipi | Öncelikli karar ölçütü | İlk yaklaşım |
|---|---|---|
| Düşük trafikli, tek sunuculu uygulama | Aktif/boş bağlantı ve sorgu süresi | Ölçülü başlangıç değeri, düzenli izleme |
| Büyüyen SaaS uygulaması | Yoğun saatlerde bekleyen istekler ve toplam bağlantı kullanımı | Pool sınırını test ederek artırma, APM ile takip |
| Çok instance’lı veya Kubernetes yapısı | Instance başına limit × çalışan instance sayısı | Merkezi bağlantı bütçesi ve ölçekleme planı |
| Raporlama veya ERP iş yükü | Uzun transaction, kilit ve pahalı sorgular | Sorgu analizi ile pool ayarını birlikte ele alma |
Connection Pool İçin Kısa Cevap: Önce Sınırları ve Beklemeyi Ölçün
Connection pool, her sorguda yeni bir veritabanı bağlantısı açmak yerine önceden oluşturulan bağlantıların yeniden kullanılmasını sağlar. Ancak en yüksek pool değeri en iyi performans anlamına gelmez. Bağlantı sayısı yükseldikçe veritabanı sunucusunun bellek, işlemci ve eşzamanlı işlem yükü de artabilir.
Havuz Boyutu Neden Yalnızca Trafik Sayısına Göre Seçilmez?
Aynı anda çok sayıda HTTP isteği gelmesi, her isteğin aynı anda veritabanı bağlantısı kullanacağı anlamına gelmez. Bazı istekler kısa sürer, bazıları cache kullanır, bazıları ise uzun transaction veya kilit beklemesi nedeniyle bağlantıyı daha uzun süre tutar. Bu yüzden karar verirken yalnızca kullanıcı veya istek sayısına değil, bağlantının ne kadar süre meşgul kaldığına da bakın.
İlk Kontrol Edilecek Üç Metrik: Aktif Bağlantı, Bekleme Süresi ve Sorgu Gecikmesi
Aktif bağlantı sayısı, havuzun gerçekten ne kadar kullanıldığını gösterir. Boş bağlantı sayısı, gereğinden büyük bir havuz tutup tutmadığınızı anlamaya yardımcı olur. Bekleyen istekler ve bağlantı edinme süresi ise uygulamanın pool nedeniyle bekleyip beklemediğini ortaya çıkarır.
Bu verileri sorgu gecikmesiyle birlikte okuyun. Pool dolu görünürken sorgular uzuyor veya kilit bekliyorsa, asıl sorun kapasite değil sorgu planı, transaction tasarımı ya da veritabanı içi eşzamanlılık olabilir.
Başlangıç Ayarını Güvenli Biçimde Test Etme Yaklaşımı
Başlangıçta makul ve sınırlandırılmış bir maksimum değer belirleyin. Ardından üretime yakın trafik altında aktif bağlantıları, bekleyen talepleri ve sorgu sürelerini izleyin. Değişikliği küçük adımlarla yapın; her adımda veritabanı CPU, bellek ve bağlantı kullanımının nasıl değiştiğini karşılaştırın. Tek bir test sonucu yerine yoğun saatlerdeki davranış daha değerlidir.
Havuz Kapasitesini Belirleyen Kriterler ve Değer Karşılaştırması
Sağlıklı bir ayar, uygulamanın istediği bağlantı sayısı ile veritabanının güvenle karşılayabileceği bağlantı sayısı arasında kurulur. Buradaki hedef, mümkün olan en çok bağlantıyı açmak değil; beklemeyi azaltırken veritabanını aşırı yüklememektir.
Veritabanı Bağlantı Limiti ile Uygulama Instance Sayısını Birlikte Hesaplamak
Birden fazla uygulama instance’ı aynı veritabanına bağlanıyorsa her instance’daki maksimum pool değeri ayrı ayrı değerlendirilmemelidir. Toplam potansiyel bağlantı, çalışan tüm instance’ların havuzlarının toplamıdır. Otomatik yatay ölçekleme kullanılan yapılarda yeni pod veya sunucu açıldığında bu toplamın hızla büyüyebileceğini hesaba katın.
Veritabanı motoru, sürümü, yapılandırması ve managed database planı bağlantı limitini değiştirebilir. Bu nedenle planlanan toplamı, ilgili veritabanı veya hizmet sağlayıcının resmî kapasite ayrıntılarıyla doğrulayın.
Eşzamanlı İstek, Transaction Süresi ve Sorgu Maliyetinin Etkisi
Kısa süren sorgular bağlantıyı daha çabuk havuza bırakır. Buna karşılık uzun transaction’lar, büyük raporlamalar veya kilit bekleyen işlemler bağlantıyı meşgul eder. Aynı pool boyutu, iki farklı sorgu yapısında tamamen farklı sonuç verebilir. Bu nedenle uzun süren sorguları ve transaction sınırlarını ayrıca incelemek gerekir.
Daha Büyük Pool, Daha Güçlü Veritabanı Paketi veya Sorgu Optimizasyonu: Hangisi Daha Mantıklı?
Bağlantı edinme süresi yükseliyor, bekleyen istekler artıyor ve veritabanı kaynakları hâlâ yeterli görünüyorsa kontrollü pool artışı değerlendirilebilir. Buna karşılık sorgular yavaşsa veya kilitler belirginse, önce sorgu optimizasyonu daha doğru adım olabilir. Mevcut paket sürekli kaynak sınırına yaklaşıyorsa managed database paketi ya da bulut sunucu kapasitesi değerlendirilmelidir.
Güvenli Yapılandırma Adımları: Maksimum, Minimum ve Timeout Ayarları
Pool yapılandırmasında maksimum bağlantı sayısı kadar bağlantıların ne zaman oluşturulacağı, ne kadar bekleyeceği ve ne zaman doğrulanacağı da önemlidir. Ayar adları kullanılan JDBC, .NET veya Node.js kütüphanesine göre değişebilir.
Maximum Pool Size İçin Üst Sınır Belirleme
Maksimum değeri, veritabanı bağlantı limitinin tamamını tek uygulamaya vermeden belirleyin. Diğer servisler, yönetim bağlantıları ve ölçekleme senaryoları için pay bırakın. Her instance’a aynı yüksek limiti tanımlamak, özellikle container ortamlarında toplam bağlantı sayısını öngörülemez hale getirebilir.
Minimum Idle Bağlantı ve Bağlantı Ömrünü Dengede Tutma
Minimum idle ayarı, ani isteklerde yeni bağlantı oluşturma gecikmesini azaltmaya yardımcı olabilir. Fakat sürekli boşta duran çok sayıda bağlantı, veritabanı üzerinde gereksiz kaynak tüketimi yaratabilir. Bağlantı ömrü ayarını da veritabanı, ağ altyapısı ve kullanılan pool yazılımının davranışıyla uyumlu olacak şekilde doğrulayın.
Connection Timeout, Idle Timeout ve Validation Kontrolleri
Connection timeout, uygulamanın bağlantı almak için ne kadar bekleyeceğini belirler. Çok uzun bekleme kullanıcı tarafında gecikmeyi büyütebilir; çok kısa bekleme ise geçici yük dalgalanmalarında hata üretebilir. Idle timeout boş bağlantıların yaşamını yönetir. Validation kontrolleri ise kullanılabilir olmayan bağlantıların tekrar işleme verilmesi riskini azaltmak için değerlendirilmelidir.

Yaygın Hatalar ve Performans Kaybını Önleme
Her Uygulama Instance’ında Aynı Yüksek Limiti Kullanmak
Tek sunucuda kabul edilebilir görünen bir değer, instance sayısı arttığında veritabanı limitini zorlayabilir. Deployment, autoscaling ve hata sonrası yeniden başlama senaryolarında kaç instance’ın aynı anda çalışabileceğini hesaba katın. Pool bütçesi, mimarinin ölçekleme politikasıyla birlikte belgelenmelidir.
Connection Leak ile Yetersiz Pool Ayarını Karıştırmak
Bir bağlantı işlem tamamlandığında havuza iade edilmiyorsa connection leak oluşabilir. Bu durumda pool büyütmek yalnızca sorunun görünmesini geciktirir. Aktif bağlantıların uzun süre serbest kalmaması, anormal kullanım desenleri ve hata kayıtları incelenmeden kapasite artırımı yapmak doğru değildir.
Yavaş Sorgu ve Kilit Sorununu Havuz Büyüterek Gizlemeye Çalışmak
Pool büyüdüğünde daha fazla sorgu aynı anda veritabanına ulaşabilir. Eğer temel sorun pahalı sorgular veya kilit yarışlarıysa, bu durum veritabanı yükünü daha da artırabilir. Sorgu analizi, indeks ve transaction değerlendirmesi; pool ayarından bağımsız değil, onunla birlikte yürütülmelidir.
Farklı Mimariler İçin Pratik Ayar Yaklaşımı
Düşük Trafikli Tek Sunuculu Uygulamalar
Önce sade bir maksimum sınır belirleyin ve aktif/boş bağlantı oranını izleyin. Belirgin bekleme yoksa daha büyük pool açmak yerine kaynak tüketimini düşük tutmak çoğu zaman daha dengeli bir yaklaşımdır.
Container ve Kubernetes Üzerinde Yatay Ölçeklenen Servisler
Pod başına pool limiti, maksimum pod sayısı ile birlikte ele alınmalıdır. Ölçekleme sırasında oluşabilecek toplam bağlantı sayısını veritabanı planınızın taşıyıp taşımadığını kontrol edin. Bu yapılarda bağlantı metriklerini merkezi bir APM veya uygulama izleme aracıyla görmek, ani değişimleri fark etmeyi kolaylaştırır.
Yoğun Raporlama, ERP veya Çok Kullanıcılı Kurumsal Uygulamalar
Bu tür iş yüklerinde uzun raporlar ve eşzamanlı işlemler bağlantıları daha uzun süre tutabilir. İşlemsel trafik ile raporlama yükünü ayrı izlemek faydalıdır. Sürekli darboğaz yaşanıyorsa yalnızca pool değerini değil, managed database kapasitesini, sorgu tasarımını ve gerekirse kurumsal performans danışmanlığı seçeneğini birlikte değerlendirin.
Seçim Kriterleri ve Karşılaştırma Özeti
Mevcut altyapıyla optimizasyon mu, kaynak paketi yükseltme mi? Karar vermeden önce şu noktaları kontrol edin:
- Tüm instance’ların olası toplam bağlantı sayısı veritabanı limitinin içinde mi?
- Bağlantı edinme süresi ve bekleyen istekler düzenli olarak artıyor mu?
- Yavaş sorgu, uzun transaction veya kilit beklemesi tespit edildi mi?
- Veritabanı CPU, bellek veya hizmet planı kapasitesi yoğun dönemlerde zorlanıyor mu?
- Autoscaling sonrası bağlantı sayısını izleyebiliyor musunuz?
İzleme aracı, sorun yalnızca belirli saatlerde oluşuyor, birden çok servis çalışıyor veya bağlantı-sorgu ilişkisini görünür kılmak istiyorsanız daha gerekli hale gelir. Managed database paketi, optimizasyon sonrası da kaynak kapasitesi yetersiz kalıyorsa değerlendirilmelidir. Resmî bağlantı limiti, plan kapasitesi ve izleme özellikleri için ilgili hizmetin ayrıntı sayfasını inceleyin.
Sonuç
Connection pool ayarında amaç en yüksek sayıya ulaşmak değil, uygulamanın gerçek kullanımına uygun bir bağlantı bütçesi oluşturmaktır. Aktif bağlantı, bekleyen istek ve sorgu gecikmesi birlikte izlenirse gereksiz büyütmelerden kaçınmak kolaylaşır.
Önce sorgu ve transaction davranışını anlayın. Ardından instance sayısını ve veritabanı limitini hesaba katarak küçük, ölçülebilir değişikliklerle ilerleyin.
Bu yaklaşım hem kesinti riskini hem de gereksiz bulut veritabanı maliyetini daha kontrollü yönetmeye yardımcı olur.
Bilmekte Fayda Var
- Pool yazılımlarının varsayılan değerleri framework ve sürüme göre değişebilir.
- Bağlantı limiti, veritabanı motoru ve seçilen managed database planına bağlıdır.
- Connection leak, pool yetersizliğiyle benzer belirtiler verebilir.
- Yatay ölçekleme, toplam bağlantı ihtiyacını doğrudan artırabilir.
Önemli Notlar
Bu çerçeve genel bir yapılandırma ve teşhis yaklaşımıdır; her uygulama için geçerli tek bir ideal maksimum bağlantı sayısı yoktur. Kesin limitler, performans sonuçları veya paket gereksinimleri; kullanılan veritabanı, hizmet planı, sorgu yapısı, trafik yoğunluğu ve transaction süreleri doğrulanmadan belirlenemez. Canlı ortamda değişiklik yapmadan önce resmi ürün belgelerini ve kendi izleme verilerinizi kontrol edin.
Sık Sorulan Sorular
Q1. Connection pool boyutunu artırmak uygulamamı her zaman hızlandırır mı?
A1. Hayır. Bağlantı beklemesi gerçekten pool yetersizliğinden kaynaklanıyorsa fayda sağlayabilir. Ancak yavaş sorgu, kilit beklemesi veya veritabanı kaynak yetersizliği varsa daha büyük pool performansı iyileştirmeyebilir.
Q2. Birden fazla uygulama sunucusu kullanırken maksimum bağlantı sayısını nasıl paylaştırmalıyım?
A2. Her sunucu veya instance için tanımlanan maksimum değeri toplayarak toplam olası bağlantı sayısını hesaplayın. Bu toplamı veritabanı bağlantı limitiyle ve ölçekleme sırasında çalışabilecek instance sayısıyla birlikte değerlendirin.
Q3. Managed database hizmetinde paket yükseltmek mi, sorguları ve pool ayarını optimize etmek mi daha uygundur?
A3. Önce bağlantı beklemesi, sorgu gecikmesi, kilitler ve kaynak kullanımını incelemek daha sağlıklıdır. Sorgu veya yapılandırma kaynaklı sorunlar varsa optimizasyon öncelikli olabilir; mevcut kapasite sürekli yetersiz kalıyorsa hizmet planı yükseltmesi değerlendirilebilir.





