Veritabanı Bağlantı Havuzu Boyutu: Kaç Worker Gerçekten Gerekli?
# Veritabanı Bağlantı Havuzu Boyutu: Kaç Worker Gerçekten Gerekli?
Bağlantı havuzu (connection pool), uygulamanız ile veritabanı arasında önceden hazırlanmış bağlantıları tutar. Her istekte yeni bağlantı açmak yerine, havuzdan bir bağlantı alırsınız. Yanlış boyut seçmek iki soruna yol açar:
- Çok küçük: İstekler sıraya girer, uygulama yavaşlar.
- Çok büyük: Veritabanı kaynakları tükenir, bağlantılar boşa harcanır.
En yaygın kural şu şekildedir:
1Havuz Boyutu = (CPU Çekirdekleri × 2) + Eşzamanlı Disk I/O SayısıÖrnek: 4 çekirdekli sunucu = (4 × 2) + 0 = 8 bağlantı
Eğer veritabanı çok I/O yapıyorsa (dosya okuma, ağ gecikmesi), 2-3 ekstra bağlantı ekleyebilirsiniz.
Java'da en popüler havuz yöneticisi HikariCP'dir. adım adım ayarı:
Adım 1: Bağımlılık ekle
1<dependency>2<groupId>com.zaxxer</groupId>3<artifactId>HikariCP</artifactId>4<version>5.0.1</version>5</dependency>Adım 2: Havuz ayarlarını yapılandır
1HikariConfig config = new HikariConfig();2config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");3config.setUsername("root");4config.setPassword("password");5config.setMaximumPoolSize(8); // Ana bağlantı sayısı6config.setMinimumIdle(2); // Minimum hazır bağlantı7config.setConnectionTimeout(30000); // 30 saniye8config.setIdleTimeout(600000); // 10 dakika910HikariDataSource ds = new HikariDataSource(config);Adım 3: Kullan
1Connection conn = ds.getConnection();2Statement stmt = conn.createStatement();3ResultSet rs = stmt.executeQuery("SELECT * FROM users");45while (rs.next()) {6System.out.println(rs.getString("name"));7}89rs.close();10stmt.close();11conn.close(); // Bağlantıyı havuza geri döndürBeklenen Çıktı:
1Alice2Bob3CharlieHikariCP, havuz durumunu loglar:
1// Log çıktısı örneği2HikariPool - Starting...3HikariPool - Added connection conn14HikariPool - Added connection conn25HikariPool - Pool is now READY (2 connections)- Küçük API (< 100 req/s): 5-10 bağlantı
- Orta ölçekli (100-1000 req/s): 10-20 bağlantı
- Yüksek trafikli (> 1000 req/s): 20-50 bağlantı
- Maksimum hiçbir zaman veritabanı limitini aşmasın
Doğru havuz boyutu, uygulamanızı hem hızlı hem verimli tutar.
0 yorum