Pendahuluan


HikariCP adalah connection pool populer yang dikenal dengan kemudahan penggunaan dan performanya.

Salah satu fitur pentingnya adalah pengaturan idleTimeout.

Artikel ini membahas secara teknis mengenai Idle timeout dan bagaimana mengoptimalkan penggunaannya di HikariCP.


Konsep Idle Timeout


Idle timeout adalah waktu maksimum koneksi idle (tidak digunakan) yang akan tetap dijaga oleh connection pool.

Koneksi idle diciptakan untuk meningkatkan performa dengan mengurangi waktu tunggu saat aplikasi membutuhkan koneksi baru.

Namun, menjaga terlalu banyak koneksi idle bisa menghabiskan resource database dan server.


HikariCP dan Idle Timeout



Pengaturan:

Idle timeout diatur dengan properti hikari.poolName.idleTimeout (sesuaikan dengan nama connection pool). Satuannya adalah mili detik (ms).



Default:

Nilai default idle timeout adalah 600000ms (10 menit).



Housekeeper:

HikariCP memiliki housekeeper yang secara periodik (default 30 detik) memeriksa koneksi.

Koneksi yang melebihi maxLifetime (umur maksimum koneksi) atau melebihi Idle timeout ditutup oleh housekeeper.



Minimum Idle vs Idle Timeout:

idleTimeout hanya berpengaruh jika minimumIdle (jumlah minimum koneksi idle) lebih kecil dari maximumPoolSize (jumlah maksimum koneksi pool).

Jika minimumIdle lebih besar atau sama dengan maximumPoolSize, maka pengecekan Idle timeout tidak dilakukan.

Dan jika minimumIdle telah tercapai, maka Idle timeout juga tidak dilakukan.


Kapan Menyesuaikan Idle Timeout?


  • Akses Database Sering: Jika aplikasi kita sering mengakses database dengan pola akses bursty (intensif dalam waktu singkat), menaikkan Idle timeout dapat meningkatkan performa. Koneksi yang siap pakai tersedia sehingga mengurangi waktu tunggu saat lonjakan akses terjadi.

  • Keterbatasan Resource: Jika server memiliki keterbatasan resource (CPU, memory), menurunkan idle timeout dapat membebaskan resource yang terpakai oleh koneksi idle yang tidak terpakai.

  • Keamanan Database: Untuk beberapa database dengan lisensi per-koneksi, mengurangi Idle timeout dapat mengurangi biaya lisensi.


Kesimpulan


Idle timeout adalah fitur penting untuk menyeimbangkan performa aplikasi dengan penggunaan resource database.

Dengan memahami cara kerja idle timeout di HikariCP, Anda dapat menyesuaikan nilainya untuk mencapai performa dan efisiensi resource yang optimal.