Ringkasan Penggabungan Koneksi Terkelola

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 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.

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 connection pool terdiri dari satu atau beberapa connection pooler. Pooler koneksi adalah layanan proxy database yang mengelola dan merutekan koneksi database antara aplikasi klien dan server database.

Kumpulan koneksi mempertahankan 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 aktif tersedia di kumpulan, maka penggabung koneksi akan menetapkannya ke permintaan klien.
  • Jika koneksi server tidak ada yang tidak ada aktivitas dan batas kumpulan (max_pool_size) belum tercapai, maka pengumpul koneksi 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 penggabung dan kumpulan

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 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 pooler 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 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 daripada secara global di seluruh instance. Koneksi server dibuat sesuai permintaan hingga batas maksimum yang ditentukan oleh max_pool_size untuk setiap pool terkelola di setiap connection pooler. Misalnya, jika max_pool_size ditetapkan 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. 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 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 paling besar untuk aplikasi yang berisi koneksi berumur pendek, atau aplikasi yang mengakibatkan lonjakan koneksi.
  • Untuk koneksi yang berjalan lama, performa koneksi menggunakan Managed Connection Pooling mungkin 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 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 Penggabungan Koneksi Terkelola, lihat Mengonfigurasi Penggabungan Koneksi Terkelola.

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 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 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 penggabungan transaction untuk koneksi 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 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 pengguna dan database untuk setiap penggabung koneksi.
min_pool_size Jumlah minimum koneksi server yang tersedia kapan saja 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 secara tiba-tiba setelah periode tidak aktif dan memastikan koneksi tersedia dan siap digunakan.

Nilai default-nya 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 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 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 di pool sebelum waktunya habis.

Menyetel opsi ini ke 0 akan menonaktifkannya, yang 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 Managed Connection Pooling menutupnya. Jika nilai ditetapkan 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.
  • Managed Connection Pooling hanya dapat digunakan dengan Cloud SQL Auth Proxy versi 2.15.2 dan yang lebih baru.
  • Jika Anda menggunakan Cloud SQL Language Connector untuk Go, sebaiknya gunakan Go versi 1.24 atau yang lebih baru. Jika Anda menggunakan Go versi 1.23 atau yang lebih lama, Anda mungkin mengalami batasan performa saat menggunakan Managed Connection Pooling.
  • Jika Anda menggunakan Penggabungan Koneksi Terkelola dalam mode penggabungan transaction, fitur SQL berikut tidak didukung:

    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW tabel sementara
    • LOAD
    • Kunci saran tingkat sesi
  • Jika Anda menggunakan library antarmuka database asyncpg untuk pooler Penggabungan Koneksi Terkelola di port 3307 dan 6432, Anda harus memperbarui max_prepared_statements ke nilai yang lebih besar dari 0 untuk mengaktifkan dukungan untuk pernyataan yang disiapkan di pooler Penggabungan Koneksi Terkelola.

  • Jika Anda menggunakan Cloud SQL untuk PostgreSQL versi 17, opsi sslnegotiation=direct tidak 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 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 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, tentukan psql -p 6432 saat 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 Managed Connection Pooling

Konfigurasi database max_connections membatasi jumlah maksimum koneksi server yang dapat digunakan oleh pooler di Penggabungan Koneksi Terkelola. Cloud SQL merekomendasikan penyesuaian nilai ini berdasarkan persyaratan beban kerja instance dan ukuran instance database. Selama beban puncak, jumlah koneksi untuk autentikasi bisa 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.

Langkah berikutnya