Pengumpulan Koneksi Terkelola memungkinkan Anda menskalakan beban kerja dengan mengoptimalkan penggunaan resource dan latensi koneksi untuk instance Cloud SQL Anda. PostgreSQL membuat proses baru untuk setiap koneksi, yang menimbulkan penggunaan memori dan overhead penyiapan koneksi. Dalam arsitektur yang sering membuat banyak koneksi berumur pendek—seperti aplikasi serverless atau microservice yang berjalan di Cloud Run—overhead ini dapat memengaruhi performa dan skalabilitas database.
Dengan Managed Connection Pooling diaktifkan, klien terhubung ke cluster kumpulan koneksi perantara, bukan terhubung langsung ke server database. Penetapan dinamis ini memberikan peningkatan performa, terutama untuk koneksi yang diskalakan, dengan menyerap lonjakan koneksi yang tiba-tiba dan menggunakan kembali koneksi database yang ada.
Penggabung koneksi dan kumpulan koneksi
Saat aplikasi klien terhubung ke instance dengan Managed Connection Pooling diaktifkan, aplikasi tersebut terhubung ke cluster kumpulan koneksi perantara, bukan terhubung langsung ke server database. Cluster kumpulan koneksi terdiri dari satu atau beberapa pengelola kumpulan koneksi. Pooler koneksi adalah layanan proxy database yang mengelola dan merutekan koneksi database antara aplikasi klien dan server database.
Pengelola kumpulan koneksi mempertahankan kumpulan koneksi sebagai grup koneksi server database terbuka yang dapat digunakan kembali per pasangan database dan pengguna.
Saat aplikasi klien terautentikasi terhubung ke database sebagai pengguna tertentu, penggabung koneksi akan merutekan permintaan ke kumpulan koneksi yang sesuai:
- Jika koneksi server yang tidak aktif tersedia di kumpulan, maka penggabung koneksi akan menetapkannya ke permintaan klien.
- Jika koneksi server yang tidak digunakan tidak tersedia dan batas pool
(
max_pool_size) belum tercapai, penggabung koneksi akan membuat koneksi server baru di pool. - Jika semua koneksi server dalam kumpulan sedang digunakan dan batas kumpulan telah tercapai, klien akan bertransisi ke status menunggu hingga koneksi server tersedia.
- Setelah permintaan selesai, koneksi server akan kembali ke kumpulan koneksi untuk digunakan kembali.
Hubungan antara penggabung dan kumpulan
Satu pengumpul koneksi dapat mengelola beberapa kumpulan koneksi secara bersamaan, dengan satu kumpulan untuk setiap pasangan pengguna database dan database unik yang terhubung melalui pengumpul tersebut.
Jika instance Anda menjalankan beberapa penggabung koneksi, setiap penggabung koneksi akan mempertahankan kumpulan koneksinya sendiri secara terpisah untuk pasangan database dan pengguna yang dirutekan ke sana.
Kemampuan performa dan penskalaan Managed Connection Pooling beroperasi di beberapa tingkat:
Penskalaan cluster kumpulan koneksi: Jumlah pengelola kumpulan koneksi di cluster diskalakan secara otomatis berdasarkan jumlah core vCPU yang disediakan untuk instance (membagi jumlah vCPU dengan 4, dengan minimum 1 pengelola kumpulan koneksi). Hal ini memastikan bahwa penggabungan koneksi tidak menjadi hambatan. Koneksi klien yang masuk didistribusikan di seluruh penggabung koneksi yang tersedia. Contoh:
- Instance dengan 2 atau 4 vCPU menjalankan 1 penggabung koneksi.
- Instance dengan 8 vCPU menjalankan 2 pengelola kumpulan koneksi.
- Instance dengan 16 vCPU menjalankan 4 pengelola kumpulan koneksi.
- Instance dengan 32 vCPU menjalankan 8 penggabung koneksi.
- Instance dengan 64 vCPU menjalankan 16 pengelola kumpulan koneksi.
Penggabung dan penskalaan pool: Karena penggabung koneksi beroperasi secara independen, semua opsi konfigurasi diterapkan per penggabung koneksi, bukan secara global di seluruh instance. Koneksi server dibuat sesuai permintaan hingga batas maksimum yang ditentukan oleh
max_pool_sizeuntuk setiap kumpulan terkelola di setiap pengelola kumpulan koneksi. Misalnya, jikamax_pool_sizedisetel ke 50 pada instance yang menjalankan 2 pengelola koneksi (8 vCPU), maka setiap pengelola koneksi dapat membuka hingga 50 koneksi server untuk pasangan database dan pengguna tertentu, sehingga memungkinkan total hingga 100 koneksi server di seluruh instance untuk kumpulan tersebut. Penyesuaian ukuran kumpulan yang akurat sangat penting untuk performa: jika nilai ini ditetapkan terlalu rendah, waktu tunggu koneksi akan lebih lama, sedangkan jika ditetapkan terlalu tinggi, resource server database akan terbuang.Konfigurasi koneksi klien: Batas koneksi klien dan perilaku waktu tunggu juga dikonfigurasi per penggabung koneksi. Parameter utama meliputi:
max_client_connections: Membatasi jumlah maksimum koneksi klien yang diizinkan per pengumpul koneksi (nilai defaultnya adalah 5.000 koneksi untuk setiap pengumpul koneksi).client_connection_idle_timeout: Mengontrol durasi koneksi klien dapat tetap tidak ada aktivitas sebelum waktunya habis.query_wait_timeout: Mengontrol durasi kueri menunggu koneksi server yang tersedia di pool sebelum waktu tunggu habis.
Kasus penggunaan dan pertimbangan
Perhatikan hal-hal berikut saat Anda menggunakan Managed Connection Pooling:
- Meskipun Anda dapat menggunakan Managed Connection Pooling untuk beban kerja transaksional apa pun, fitur ini memberikan manfaat throughput dan latensi terbesar untuk aplikasi yang berisi koneksi berumur pendek, atau aplikasi yang menghasilkan lonjakan koneksi.
- Untuk koneksi yang berjalan lama, performa koneksi menggunakan Managed Connection Pooling dapat sedikit lebih rendah daripada saat menggunakan koneksi langsung. Dalam hal ini, Managed Connection Pooling menyediakan penskalaan koneksi saat jumlah koneksi sangat tinggi. Namun, untuk aplikasi yang biasanya membuat koneksi berjangka panjang, Anda mungkin ingin menghindari penggunaan penggabungan koneksi.
- Anda dapat menggunakan Identity and Access Management untuk mengamankan koneksi ke instance, bergantung pada port yang digunakan Managed Connection Pooling. Untuk mengetahui informasi selengkapnya tentang cara kerja IAM di Cloud SQL dan batasannya, lihat Autentikasi IAM.
Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan Managed Connection Pooling, lihat Mengonfigurasi Managed Connection Pooling.
Persyaratan
Untuk menggunakan Managed Connection Pooling, instance Anda harus memenuhi persyaratan berikut:
- Instance Anda harus berupa instance edisi Cloud SQL Enterprise Plus.
- Anda harus terhubung ke instance hanya menggunakan koneksi langsung atau Proxy Auth Cloud SQL.
- Instance Anda harus disiapkan untuk akses layanan pribadi, menggunakan IP publik, atau berupa instance baru dengan Private Service Connect yang diaktifkan.
- Instance Anda harus menggunakan arsitektur jaringan Cloud SQL yang baru.
- Penggabungan Koneksi Terkelola memerlukan nomor versi pemeliharaan
minimum
POSTGRES_$version.R20250727.00_14. Untuk mengetahui informasi selengkapnya tentang cara melakukan pemeliharaan mandiri, lihat Melakukan pemeliharaan mandiri.
Opsi penggabungan
Penggabungan Koneksi Terkelola memungkinkan Anda mengelola cara penggabungan koneksi menggunakan
parameter pool_mode. Anda dapat menggunakan opsi penggabungan berikut:
transaction(default): mengumpulkan koneksi di tingkat transaksi. Koneksi dikembalikan ke pool setelah setiap transaksi selesai. Cloud SQL merekomendasikan penggunaan mode penggabungantransactionuntuk koneksi yang berumur pendek.session: mengumpulkan koneksi di tingkat sesi. Setiap sesi menggunakan koneksi server khusus yang mempertahankan status sesi. Hal ini mengurangi efisiensi penggabungan. Saat klien terputus, koneksi server akan kembali ke kumpulan koneksi.
Opsi konfigurasi lanjutan
Anda dapat menyesuaikan Managed Connection Pooling dengan menggunakan opsi konfigurasi berikut.
| Nama konfigurasi | Deskripsi |
|---|---|
max_pool_size
|
Jumlah maksimum koneksi server yang diizinkan ke pasangan database dan pengguna
di setiap kumpulan koneksi. Konfigurasi ini diterapkan per
penggabung koneksi. Tentukan nilai ini berdasarkan ukuran instance dan
persyaratan ukuran kumpulan Anda.
Nilai defaultnya adalah 50 koneksi per pasangan database dan
pengguna untuk setiap penggabung koneksi.
|
min_pool_size
|
Jumlah minimum koneksi server yang tersedia setiap saat di setiap
kumpulan koneksi. Konfigurasi ini diterapkan per penggabung koneksi.
Tentukan nilai ini berdasarkan persyaratan ukuran instance dan ukuran pool Anda.
Jika jumlah koneksi server kurang dari min_pool_size, setelan ini akan menambahkan lebih banyak koneksi
server ke kumpulan. Hal ini membantu mengelola peningkatan beban database yang tiba-tiba setelah periode tidak aktif dan memastikan koneksi tersedia dan siap digunakan.
Nilai defaultnya adalah 0 koneksi.
|
max_client_connections
|
Jumlah maksimum koneksi klien yang diizinkan per penggabung koneksi
saat menggunakan Managed Connection Pooling. Tentukan nilai ini berdasarkan
persyaratan ukuran instance dan ukuran kumpulan Anda.
Nilai defaultnya adalah 5,000 koneksi untuk setiap penggabung koneksi.
|
max_prepared_statements
|
Jumlah maksimum pernyataan yang disiapkan bernama tingkat protokol yang didukung per penggabung koneksi dalam mode penggabungan transaction.
Tentukan nilai ini berdasarkan persyaratan ukuran instance dan ukuran pool Anda.
Menetapkan opsi ini ke 0 akan menonaktifkan dukungan
pernyataan yang disiapkan. Untuk performa yang optimal, nilai ini harus melebihi jumlah pernyataan yang disiapkan yang umum digunakan dalam database Anda. Sejumlah besar
pernyataan yang disiapkan dalam Managed Connection Pooling dapat menyebabkan
peningkatan penggunaan memori.
Nilai defaultnya adalah pernyataan 0.
|
client_connection_idle_timeout
|
Waktu saat koneksi klien tetap tidak ada aktivitas sebelum waktu koneksi berakhir.
Nilai ini dapat berkisar dari 0 hingga 2,147,483
detik, dan nilai defaultnya adalah 0 detik.
|
server_connection_idle_timeout
|
Waktu koneksi server tetap tidak ada aktivitas sebelum batas waktunya habis.
Nilai ini dapat berkisar dari 0 hingga 2,147,483 detik, dan nilai defaultnya adalah 600 detik.
|
query_wait_timeout
|
Waktu tunggu kueri untuk koneksi server dalam kumpulan sebelum
waktunya habis.
Menyetel opsi ini ke 0 akan menonaktifkannya, sehingga memungkinkan antrean klien tanpa batas. Mengaktifkan opsi ini akan mencegah server yang tidak responsif menahan koneksi. Nilai ini dapat berkisar dari 0 hingga 2,147,483
detik, dan nilai defaultnya adalah 120 detik.
|
ignore_startup_parameters
|
Parameter yang ingin Anda abaikan, yang tidak dilacak dalam paket startup Managed Connection Pooling secara default. |
server_lifetime
|
Waktu maksimum koneksi server tidak digunakan sebelum
Managed Connection Pooling menutupnya. Jika nilai disetel ke
0 detik, koneksi akan segera ditutup
setelah digunakan.
Nilai default-nya adalah 3600 detik.
|
Batasan
Saat menggunakan Managed Connection Pooling dengan instance edisi Cloud SQL Enterprise Plus, pertimbangkan batasan berikut:
- Mengaktifkan Managed Connection Pooling di instance yang ada akan menyebabkan database dimulai ulang.
- Penggabungan Koneksi Terkelola hanya dapat digunakan dengan Proxy Auth Cloud SQL versi 2.15.2 dan yang lebih baru.
- Jika Anda menggunakan Cloud SQL Go Language Connector, sebaiknya gunakan versi Go minimum
1.24. Jika Anda menggunakan Go versi 1.23 atau yang lebih lama, Anda mungkin mengalami batasan performa saat menggunakan Managed Connection Pooling. Jika Anda menggunakan Managed Connection Pooling dalam mode penggabungan
transaction, maka fitur SQL berikut tidak didukung:SET/RESETLISTENWITH HOLD CURSORPREPARE/DEALLOCATE- Tabel sementara
PRESERVE/DELETE ROW LOAD- Kunci saran tingkat sesi
Jika Anda menggunakan library antarmuka database asyncpg untuk pooler Managed Connection Pooling di port 3307 dan 6432, Anda harus mengupdate
max_prepared_statementske nilai yang lebih besar dari 0 untuk mengaktifkan dukungan bagi pernyataan yang disiapkan di pooler Managed Connection Pooling.Jika Anda menggunakan Cloud SQL untuk PostgreSQL versi 17, opsi
sslnegotiation=directtidak didukung.Pelacakan IP klien tidak didukung dengan Managed Connection Pooling. Jika Anda mengaktifkan simpan alamat IP klien di insight kueri, alamat IP klien akan ditampilkan sebagai
local, bukan alamat IP itu sendiri.
Port yang digunakan oleh Managed Connection Pooling
Saat Anda mengaktifkan Managed Connection Pooling, port yang digunakan oleh instance Cloud SQL untuk melayani traffic database akan berubah. Anda dapat menggunakan Identity and Access Management untuk mengamankan koneksi, bergantung pada port.
Port yang digunakan oleh Managed Connection Pooling dan opsi IAM yang tersedia adalah sebagai berikut:
Port TCP
5432: digunakan untuk koneksi langsung oleh server database Postgres. Ini adalah nomor port default untuk terhubung langsung menggunakan klien psql.Port TCP
6432: digunakan untuk koneksi langsung oleh server Managed Connection Pooling. Untuk terhubung menggunakan port ini, tentukanpsql -p 6432saat terhubung langsung menggunakan klien psql.Anda dapat menggunakan opsi autentikasi IAM apa pun saat menggunakan port ini.
Port TCP
3307: digunakan untuk koneksi hanya Proxy Auth Cloud SQL oleh server Managed Connection Pooling. Saat Anda menggunakan Proxy Auth Cloud SQL untuk terhubung ke Penggabungan Koneksi Terkelola, nomor port ini dikonfigurasi dengan klien Proxy Auth Cloud SQL dan tidak dapat diubah.Anda dapat menggunakan opsi autentikasi IAM, atau autentikasi database IAM otomatis dengan port ini.
Koneksi server yang digunakan oleh Managed Connection Pooling
Konfigurasi database max_connections membatasi jumlah maksimum koneksi server yang dapat digunakan oleh pooler dalam Managed Connection Pooling.
Cloud SQL merekomendasikan penyesuaian nilai ini berdasarkan persyaratan beban kerja instance dan ukuran instance database. Selama beban puncak,
jumlah koneksi untuk autentikasi dapat menjadi sangat tinggi.
Jika Anda menggunakan max_pool_size default 50 koneksi per pool, sebaiknya cadangkan setidaknya 15 koneksi server per CPU untuk Managed Connection Pooling saat Anda menyetel tanda max_connections untuk database Anda.
Untuk mengetahui informasi selengkapnya tentang flag max_connections, lihat
Koneksi serentak maksimum.
Untuk mengubah flag max_connections untuk instance Anda,
lihat Mengonfigurasi flag database.