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ı:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

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 saniye
8config.setIdleTimeout(600000); // 10 dakika
9
10HikariDataSource ds = new HikariDataSource(config);

Adım 3: Kullan

1Connection conn = ds.getConnection();
2Statement stmt = conn.createStatement();
3ResultSet rs = stmt.executeQuery("SELECT * FROM users");
4
5while (rs.next()) {
6System.out.println(rs.getString("name"));
7}
8
9rs.close();
10stmt.close();
11conn.close(); // Bağlantıyı havuza geri döndür

Beklenen Çıktı:

1Alice
2Bob
3Charlie

HikariCP, havuz durumunu loglar:

1// Log çıktısı örneği
2HikariPool - Starting...
3HikariPool - Added connection conn1
4HikariPool - Added connection conn2
5HikariPool - 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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz