Spring Boot'ta Database Connection Pool Ayarı: HikariCP ile Performans
Veri tabanına her bağlantı kurmak maliyetli bir işlemdir. Connection pool, önceden açılmış bağlantıları saklar ve tekrar kullanır. Bu sayede uygulamanız çok daha hızlı çalışır ve sunucu kaynakları verimli kullanılır.
Spring Boot, varsayılan olarak HikariCP adlı connection pool kütüphanesini kullanır. Uygulamanızın ihtiyacına göre bu ayarları yapılandırabilirsiniz.
En basit şekilde başlayalım. Proje kökündeki `application.properties` dosyasını açın ve şu satırları ekleyin:
1spring.datasource.url=jdbc:mysql://localhost:3306/mydb2spring.datasource.username=root3spring.datasource.password=12344spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver56# HikariCP Ayarları7spring.datasource.hikari.maximum-pool-size=208spring.datasource.hikari.minimum-idle=59spring.datasource.hikari.connection-timeout=3000010spring.datasource.hikari.idle-timeout=60000011spring.datasource.hikari.max-lifetime=1800000- maximum-pool-size: Aynı anda açılabilecek maksimum bağlantı sayısı (varsayılan: 10)
- minimum-idle: Boşta bekleyen minimum bağlantı sayısı (varsayılan: 10)
- connection-timeout: Yeni bağlantı bekleme süresi milisaniye cinsinden
- idle-timeout: Boşta bağlantının kapatılmasına kadar geçen süre
- max-lifetime: Bir bağlantının maksimum yaşam süresi
Eğer `application.yml` kullanıyorsanız:
1spring:2datasource:3url: jdbc:mysql://localhost:3306/mydb4username: root5password: 12346driver-class-name: com.mysql.cj.jdbc.Driver7hikari:8maximum-pool-size: 209minimum-idle: 510connection-timeout: 3000011idle-timeout: 60000012max-lifetime: 1800000Daha ileri kontrol için Java sınıfında yapılandırayabilirsiniz:
1import com.zaxxer.hikari.HikariConfig;2import com.zaxxer.hikari.HikariDataSource;3import org.springframework.context.annotation.Bean;4import org.springframework.context.annotation.Configuration;56@Configuration7public class DataSourceConfig {8@Bean9public HikariDataSource dataSource() {10HikariConfig config = new HikariConfig();11config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");12config.setUsername("root");13config.setPassword("1234");14config.setMaximumPoolSize(20);15config.setMinimumIdle(5);16config.setConnectionTimeout(30000);17config.setIdleTimeout(600000);18config.setMaxLifetime(1800000);19return new HikariDataSource(config);20}21}Uygulamanız başlatıldığında HikariCP loglarını göreceksiniz:
12024-01-15 10:30:45.123 INFO - HikariPool-1 - Starting pool22024-01-15 10:30:45.456 INFO - HikariPool-1 - Added connection conn132024-01-15 10:30:45.789 INFO - HikariPool-1 - Pool is readyBu loglar connection pool'un başarıyla oluşturulduğunu gösterir.
Çoğu uygulamada `maximum-pool-size: 20` ve `minimum-idle: 5` yeterlidir. Eğer uygulamanız yüksek trafik alıyorsa pool size'ı artırabilirsiniz. Ancak sunucu kaynakları sınırlıysa çok yüksek bir değer kullanmayın, çünkü bu bellek tüketimini artırır.
0 yorum