Ketahanan koneksi (JDBC)
Ketahanan koneksi memungkinkan koneksi diam yang rusak untuk dibuat ulang, dalam batasan. Jika koneksi awal gagal, ketahanan koneksi juga memungkinkan driver untuk mencoba kembali koneksi secara otomatis. Hanya SQL Server 2014 dan yang lebih baru dan Azure SQL Database yang mendukung menyambungkan kembali koneksi diam yang rusak. Fitur ini tersedia dimulai dengan Microsoft JDBC Driver 10.2.0 untuk SQL Server.
Coba lagi koneksi
Ada dua aspek untuk ketahanan koneksi. Yang pertama adalah kemampuan untuk mencoba kembali koneksi database awal secara transparan. Yang kedua adalah kemampuan untuk memulihkan koneksi diam yang ada secara transparan. Koneksi diam yang khas mungkin berupa koneksi yang berada di kumpulan koneksi. Koneksi "menganggur" umumnya adalah koneksi yang menganggur selama setidaknya 30 detik. Koneksi ini sering kali dapat ditutup oleh server atau oleh perangkat jaringan antara klien dan server.
Driver JDBC memiliki dua opsi koneksi yang mengontrol perilaku ketahanan koneksi. Opsi ini dapat ditambahkan ke string koneksi atau diatur melalui properti sumber data.
Kata kunci | Nilai | Default | Deskripsi |
---|---|---|---|
connectRetryCount |
Bilangan bulat antara 0 dan 255 (inklusif) | 1 | Jumlah maksimum upaya untuk membuat atau membangun kembali koneksi sebelum menyerah. Secara default, satu upaya coba lagi dilakukan. Nilai 0 berarti bahwa percobaan ulang tidak akan dicoba. |
connectRetryInterval |
Bilangan bulat antara 1 dan 60 (inklusif) | 10 | Waktu, dalam detik, antara upaya coba lagi koneksi. Driver akan mencoba untuk terhubung kembali segera setelah mendeteksi koneksi diam yang rusak, dan kemudian akan menunggu connectRetryInterval detik sebelum mencoba lagi. Kata kunci ini diabaikan jika connectRetryCount adalah 0. |
Jika produk dikalikan connectRetryCount
dengan connectRetryInterval
lebih besar dari loginTimeout
, maka driver akan berhenti mencoba untuk terhubung setelah loginTimeout
tercapai. Jika tidak, ia akan terus mencoba menyambungkan kembali hingga connectRetryCount
tercapai.
Pemulihan koneksi
Untuk mendeteksi koneksi diam yang rusak, driver mengandalkan paket keepalive TCP di tingkat soket. Di Linux dan Java 11+, driver secara otomatis mengaktifkan paket keepalive pada interval 30 detik (KeepAliveTime
) dengan penundaan 1 detik antara percobaan ulang ketika kegagalan terjadi (KeepAliveInterval
).
Penting
Di Windows dan macOS atau di Java 8, keepalives harus dikonfigurasi secara manual dalam sistem operasi untuk memanfaatkan pemulihan koneksi diam yang rusak. Untuk informasi tentang cara mengonfigurasi keepalives, lihat Koneksi ke database Azure SQL.
Batasan
Koneksi diam yang rusak tidak dapat dipulihkan ketika:
- Ada kumpulan hasil terbuka yang belum sepenuhnya diurai atau di-buffer
- Beralih database terhadap Azure SQL
- Ada transaksi terbuka
Lihat juga
Menyambungkan ke database Azure SQL
Artikel Teknis - Ketahanan Koneksi Diam
Gambaran umum driver JDBC