Penggabungan Koneksi Terkelola memungkinkan Anda menskalakan workload dengan mengoptimalkan penggunaan resource dan latensi koneksi untuk instance Cloud SQL Anda. PostgreSQL membuat proses baru untuk setiap koneksi, yang menimbulkan overhead penggunaan memori dan penyiapan koneksi. Dalam arsitektur yang sering membuat banyak koneksi berumur pendek—seperti microservice atau aplikasi serverless yang berjalan di Cloud Run—overhead ini dapat memengaruhi performa dan skalabilitas database.
Dengan mengaktifkan Managed Connection Pooling, 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.
Connection pooler dan connection pool
Saat aplikasi klien terhubung ke instance dengan Penggabungan Koneksi Terkelola diaktifkan, aplikasi tersebut terhubung ke cluster penggabungan koneksi perantara, bukan terhubung langsung ke server database. Cluster connection pool terdiri dari satu atau beberapa connection pooler. Connection pooler adalah layanan proxy database yang mengelola dan merutekan koneksi database antara aplikasi klien dan server database.
Connection pooler mengelola kumpulan koneksi sebagai grup koneksi server database terbuka yang dapat digunakan kembali per pasangan database dan pengguna.
Saat aplikasi klien yang diautentikasi terhubung ke database sebagai pengguna tertentu, connection pooler akan mengarahkan permintaan ke kumpulan koneksi yang sesuai:
- Jika koneksi server yang tidak ada aktivitas tersedia di kumpulan, connection pooler akan menetapkannya ke permintaan klien.
- Jika koneksi server tidak ada yang tidak aktif dan batas kumpulan (
max_pool_size) belum tercapai, connection pooler akan membuat koneksi server baru di kumpulan. - Jika semua koneksi server dalam kumpulan sedang digunakan dan batas kumpulan telah tercapai, klien akan beralih ke status menunggu hingga koneksi server tersedia.
- Setelah permintaan selesai, koneksi server akan kembali ke kumpulan koneksi untuk digunakan kembali.
Hubungan antara pooler dan pool
Satu connection pooler dapat mengelola beberapa connection pool secara bersamaan, dengan satu pool untuk setiap pasangan pengguna database dan database unik yang terhubung melalui pooler tersebut.
Jika instance Anda menjalankan beberapa connection pooler, setiap connection pooler akan secara independen mengelola kumpulan koneksi terpisah untuk pasangan database dan pengguna yang dirutekan ke instance tersebut.
Kemampuan performa dan penskalaan Penggabungan Koneksi Terkelola beroperasi di beberapa level:
Penskalaan cluster connection pool: Jumlah connection pooler dalam cluster diskalakan secara otomatis berdasarkan jumlah core vCPU yang disediakan untuk instance (membagi jumlah vCPU dengan 4, dengan minimum 1 connection pooler). Hal ini memastikan bahwa penggabungan koneksi tidak menjadi bottleneck. Koneksi klien yang masuk didistribusikan di seluruh pooler koneksi yang tersedia. Contoh:
- Instance dengan 2 atau 4 vCPU menjalankan 1 connection pooler.
- Instance dengan 8 vCPU menjalankan 2 connection pooler.
- Instance dengan 16 vCPU menjalankan 4 connection pooler.
- Instance dengan 32 vCPU menjalankan 8 connection pooler.
- Instance dengan 64 vCPU menjalankan 16 connection pooler.
Penskalaan pooler dan pool: Karena pooler koneksi beroperasi secara independen, semua opsi konfigurasi diterapkan per pooler koneksi, bukan secara global di seluruh instance. Koneksi server dibuat sesuai permintaan hingga batas maksimum yang ditentukan oleh
max_pool_sizeuntuk setiap pool terkelola di setiap connection pooler. Misalnya, jikamax_pool_sizeditetapkan ke 50 pada instance yang menjalankan 2 connection pooler (8 vCPU), setiap connection pooler dapat membuka hingga 50 koneksi server untuk pasangan database dan pengguna tertentu, sehingga memungkinkan total hingga 100 koneksi server di seluruh instance untuk pool tersebut. Penentuan ukuran kumpulan yang akurat sangat penting untuk performa: menetapkan nilai ini terlalu rendah dapat menyebabkan waktu tunggu koneksi yang lebih lama, sedangkan menetapkannya terlalu tinggi dapat memboroskan resource server database.Konfigurasi koneksi klien: Batas koneksi klien dan perilaku waktu tunggu juga dikonfigurasi per connection pooler. Parameter utama mencakup:
max_client_connections: Membatasi jumlah maksimum koneksi klien yang diizinkan per connection pooler (nilai defaultnya adalah 5.000 koneksi untuk setiap connection pooler).client_connection_idle_timeout: Mengontrol durasi koneksi klien dapat tetap tidak aktif sebelum waktu tunggu 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 Penggabungan Koneksi Terkelola:
- Meskipun Anda dapat menggunakan Managed Connection Pooling untuk workload transaksional apa pun, fitur ini memberikan manfaat throughput dan latensi terbesar untuk aplikasi yang berisi koneksi berumur pendek, atau aplikasi yang mengakibatkan lonjakan koneksi.
- Untuk koneksi yang berumur panjang, performa koneksi menggunakan Penggabungan Koneksi Terkelola dapat sedikit lebih rendah daripada saat menggunakan koneksi langsung. Dalam hal ini, Penggabungan Koneksi Terkelola menyediakan penskalaan koneksi saat jumlah koneksi sangat tinggi. Namun, untuk aplikasi yang biasanya membuat koneksi yang berjalan lama, sebaiknya hindari penggunaan penggabungan koneksi.
- Anda dapat menggunakan Identity and Access Management untuk mengamankan koneksi ke instance, bergantung pada port yang digunakan Penggabungan Koneksi Terkelola. Untuk mengetahui informasi selengkapnya tentang cara kerja IAM di Cloud SQL dan batasannya, lihat Autentikasi IAM.
Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan Penggabungan Koneksi Terkelola, lihat Mengonfigurasi Penggabungan Koneksi Terkelola.
Persyaratan
Untuk menggunakan Managed Connection Pooling, instance Anda harus memenuhi persyaratan berikut:
- Instance Anda harus merupakan instance edisi Cloud SQL Enterprise Plus.
- Anda harus terhubung ke instance hanya menggunakan koneksi langsung atau Cloud SQL Auth Proxy.
- Instance Anda harus disiapkan untuk akses layanan pribadi, menggunakan IP publik, atau mengaktifkan Private Service Connect.
- 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 koneksi digabungkan menggunakan parameter pool_mode. Anda dapat menggunakan opsi penggabungan berikut:
transaction(default): menggabungkan koneksi di tingkat transaksi. Koneksi dikembalikan ke pool setelah setiap transaksi selesai. Cloud SQL merekomendasikan penggunaan mode penggabungantransactionuntuk koneksi berumur pendek.session: menggabungkan 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 Penggabungan Koneksi Terkelola 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
pooler koneksi. Tentukan nilai ini berdasarkan ukuran instance dan persyaratan ukuran kumpulan Anda.
Nilai defaultnya adalah 50 koneksi per database dan
pasangan pengguna untuk setiap connection pooler.
|
min_pool_size
|
Jumlah minimum koneksi server yang tersedia kapan saja di setiap
kumpulan koneksi. Konfigurasi ini diterapkan per connection pooler.
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 Penggabungan Koneksi Terkelola. Tentukan nilai ini berdasarkan persyaratan ukuran instance dan ukuran kumpulan Anda.
Nilai defaultnya adalah 5,000 koneksi untuk setiap connection pooler.
|
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. Jumlah pernyataan yang disiapkan yang tinggi di Penggabungan Koneksi Terkelola dapat menyebabkan peningkatan penggunaan memori.
Nilai defaultnya adalah pernyataan 0.
|
client_connection_idle_timeout
|
Waktu koneksi klien tetap tidak ada aktivitas sebelum waktu tunggu habis.
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 waktu 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 waktu tunggu 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 Penggabungan Koneksi Terkelola secara default. |
server_lifetime
|
Waktu maksimum koneksi server tidak digunakan sebelum
Penggabungan Koneksi Terkelola menutupnya. Jika nilai ditetapkan ke 0 detik, koneksi akan segera ditutup setelah digunakan.
Nilai default-nya adalah 3600 detik.
|
Batasan
Saat menggunakan Penggabungan Koneksi Terkelola dengan instance edisi Cloud SQL Enterprise Plus, pertimbangkan batasan berikut:
- Mengaktifkan Penggabungan Koneksi Terkelola pada instance yang ada akan menyebabkan database dimulai ulang.
- Penggabungan Koneksi Terkelola hanya dapat digunakan dengan Cloud SQL Auth Proxy 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 Penggabungan Koneksi Terkelola. Jika Anda menggunakan Penggabungan Koneksi Terkelola dalam mode penggabungan
transaction, fitur SQL berikut tidak didukung:SET/RESETLISTENWITH HOLD CURSORPREPARE/DEALLOCATEPRESERVE/DELETE ROWtabel sementaraLOAD- Kunci penasihat tingkat sesi
Jika Anda menggunakan library antarmuka database asyncpg untuk pooler Managed Connection Pooling di port 3307 dan 6432, Anda harus memperbarui
max_prepared_statementske nilai yang lebih besar dari 0 untuk mengaktifkan dukungan untuk 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 Query Insights, alamat IP klien akan ditampilkan sebagai
local, bukan alamat IP itu sendiri.
Port yang digunakan oleh Penggabungan Koneksi Terkelola
Saat Anda mengaktifkan Penggabungan Koneksi Terkelola, port yang digunakan oleh instance Cloud SQL untuk menyalurkan traffic database akan berubah. Anda dapat menggunakan Identity and Access Management untuk mengamankan koneksi, bergantung pada port-nya.
Port yang digunakan oleh Penggabungan Koneksi Terkelola 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 khusus Cloud SQL Auth Proxy oleh server Managed Connection Pooling. Saat Anda menggunakan Cloud SQL Auth Proxy untuk terhubung ke Penggabungan Koneksi Terkelola, nomor port ini dikonfigurasi dengan klien Cloud SQL Auth Proxy dan tidak dapat diubah.Anda dapat menggunakan opsi autentikasi IAM, atau autentikasi database IAM otomatis dengan port ini.
Koneksi server yang digunakan oleh Penggabungan Koneksi Terkelola
Konfigurasi database max_connections membatasi jumlah maksimum koneksi server yang dapat digunakan oleh pooler di Penggabungan Koneksi Terkelola.
Cloud SQL merekomendasikan untuk menyesuaikan nilai ini berdasarkan persyaratan workload instance Anda dan ukuran instance database. Selama beban puncak,
jumlah koneksi untuk autentikasi bisa menjadi sangat tinggi.
Jika Anda menggunakan max_pool_size default sebanyak 50 koneksi per pool, sebaiknya cadangkan setidaknya 15 koneksi server per CPU untuk Managed Connection Pooling saat Anda menetapkan flag 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.