Panoramica del pool di connessioni gestito

Questa pagina descrive cos'è il pooling di connessioni gestito e come utilizzarlo per ottimizzare la gestione delle connessioni al database per le tue istanze Cloud SQL utilizzando il pooling.

Il pooling delle connessioni gestito ti consente di scalare i carichi di lavoro ottimizzando l'utilizzo delle risorse e la latenza di connessione per le tue istanze Cloud SQL utilizzando il pooling. Il pool di connessioni gestito assegna dinamicamente le connessioni server alle richieste in entrata, se possibile. Ciò comporta miglioramenti significativi delle prestazioni, soprattutto per le connessioni scalate, assorbendo picchi improvvisi di connessione e riutilizzando le connessioni al database esistenti. Anziché connettersi a un database specifico, il pool di connessioni gestito si connette a un cluster di pooler, che forniscono tempi di connessione più brevi e scalabilità per i tuoi workload.

Ogni pool è associato a un database e a un utente unici. Una volta autenticato un client, il pool tenta di riutilizzare una delle connessioni server inattive all'interno del pool per connettere il database al server. Se una connessione al server non è disponibile, crea una nuova connessione al server nel pool per connettere il database. Il numero di pooler utilizzati si basa sul numero di core vCPU della tua istanza.

Sebbene tu possa utilizzare il pool di connessioni gestito per qualsiasi carico di lavoro transazionale, offre il massimo vantaggio in termini di velocità effettiva e latenza alle applicazioni che contengono connessioni di breve durata o che comportano un aumento improvviso delle connessioni.

Per le connessioni di lunga durata, le prestazioni della connessione utilizzando il pool di connessioni gestito possono essere leggermente inferiori rispetto a quelle di una connessione diretta. In questo caso, il pool di connessioni gestito fornisce lo scaling delle connessioni quando il numero di connessioni è molto elevato. Tuttavia, per le applicazioni che in genere stabiliscono connessioni di lunga durata, potresti voler evitare di utilizzare il pool di connessioni.

Puoi utilizzare Identity and Access Management per proteggere le connessioni, a seconda della porta. Per saperne di più su come funziona IAM in Cloud SQL e sulle relative limitazioni, consulta Autenticazione IAM.

Per ulteriori informazioni sull'abilitazione del pooling di connessioni gestito, consulta Configurare il pooling di connessioni gestito.

Requisiti

Per utilizzare il pool di connessioni gestito, l'istanza deve soddisfare i seguenti requisiti:

  • L'istanza deve essere un'istanza Cloud SQL Enterprise Plus.
  • Devi connetterti all'istanza utilizzando solo una connessione diretta o il proxy di autenticazione Cloud SQL.
  • L'istanza deve essere configurata per l'accesso privato ai servizi, utilizzare un IP pubblico o essere una nuova istanza con Private Service Connect abilitato.
  • L'istanza deve utilizzare la nuova architettura di rete Cloud SQL.
  • Il pool di connessioni gestito richiede un numero di versione di manutenzione minimo di POSTGRES_$version.R20250727.00_14. Per saperne di più sull'esecuzione della manutenzione self-service, consulta Eseguire la manutenzione self-service.

Porte utilizzate dal pool di connessioni gestito per le istanze Cloud SQL

Quando abiliti il pool di connessioni gestito, le porte utilizzate dalle istanze Cloud SQL per gestire il traffico del database cambiano. Puoi utilizzare Identity and Access Management per proteggere le connessioni, a seconda della porta.

Le porte utilizzate dal pool di connessioni gestito e le relative opzioni IAM disponibili sono le seguenti:

Opzioni di pooling

Il pool di connessioni gestito ti consente di gestire il modo in cui le connessioni vengono raggruppate utilizzando il parametro pool_mode. Puoi utilizzare le seguenti opzioni di raggruppamento:

  • transaction (impostazione predefinita): raggruppa le connessioni a livello di transazione. Le connessioni vengono restituite al pool al termine di ogni transazione. Cloud SQL consiglia di utilizzare la modalità di pooling transaction per le connessioni di breve durata.
  • session: raggruppa le connessioni a livello di sessione. Ogni sessione utilizza una connessione server dedicata che mantiene lo stato della sessione. In questo modo si riduce l'efficienza del pooling. Quando un client si disconnette, il server torna al pool di connessioni.

Opzioni di configurazione avanzate

Puoi personalizzare il pool di connessioni gestito utilizzando le seguenti opzioni di configurazione:

Nome della configurazione Descrizione
max_pool_size Il numero massimo di connessioni server consentite a una coppia di database e utente in ogni pool di connessioni. Il valore predefinito è 50 connessioni.
min_pool_size Il numero minimo di connessioni server disponibili in qualsiasi momento in ogni pool di connessioni.

Se il numero di connessioni server è inferiore a min_pool_size, questa impostazione aggiunge altre connessioni server al pool. Ciò consente di gestire gli improvvisi aumenti del carico del database dopo periodi di inattività e garantisce che le connessioni siano disponibili e pronte all'uso.

Il valore predefinito è 0 connessioni.
max_client_connections Il numero massimo di connessioni consentite per l'istanza quando utilizzi il pooling di connessioni gestito. Il valore predefinito è 5000 connessioni.
max_prepared_statements Il numero massimo di istruzioni preparate denominate a livello di protocollo supportate nella modalità di pooling transaction.

Se imposti questa opzione su 0, il supporto delle istruzioni preparate viene disattivato. Per prestazioni ottimali, questo valore deve superare il numero di istruzioni preparate comunemente utilizzate nel database. Un numero elevato di istruzioni preparate nel pool di connessioni gestito potrebbe causare un aumento dell'utilizzo della memoria.

Il valore predefinito è 0 dichiarazioni.
client_connection_idle_timeout Il tempo in cui una connessione client rimane inattiva prima del timeout. Questo valore può variare da 0 a 2.147.483 secondi e il valore predefinito è 0 secondi.
server_connection_idle_timeout Il tempo in cui una connessione server rimane inattiva prima del timeout. Questo valore può variare da 0 a 2.147.483 secondi e il valore predefinito è 600 secondi.
query_wait_timeout Il tempo di attesa di una query per una connessione server in un pool prima del timeout.

Se questa opzione viene impostata su 0, viene disattivata, il che consente l'accodamento indefinito dei client. L'attivazione di questa opzione impedisce ai server che non rispondono di bloccare le connessioni.

Questo valore può variare da 0 a 2.147.483 secondi e il valore predefinito è 120 secondi.
ignore_startup_parameters I parametri che vuoi ignorare, che non vengono monitorati nei pacchetti di avvio del pool di connessioni gestite per impostazione predefinita.
server_lifetime Il tempo massimo in cui una connessione server rimane inutilizzata prima che il pool di connessioni gestito la chiuda. Se il valore è impostato su 0 secondi, la connessione viene chiusa immediatamente dopo l'uso.

Il valore predefinito è 3600 secondi.

Limitazioni

Quando utilizzi il pool di connessioni gestito con le istanze Cloud SQL Enterprise Plus, tieni presente queste limitazioni:

  • L'attivazione del pool di connessioni gestito su un'istanza esistente comporta il riavvio del database.
  • Quando utilizzi l'API Cloud SQL per abilitare, disabilitare o configurare il pool di connessioni gestito, l'API instance.update non può contenere altri aggiornamenti della configurazione dell'istanza.
  • Il pool di connessioni gestito può essere utilizzato solo con il proxy di autenticazione Cloud SQL versione 2.15.2 e successive.
  • Se utilizzi il connettore del linguaggio Go di Cloud SQL, ti consigliamo una versione minima di Go 1.24. Se utilizzi Go versione 1.23 o precedenti, potresti riscontrare limitazioni delle prestazioni quando utilizzi il pool di connessioni gestito.
  • Se utilizzi il pool di connessioni gestito in modalità di pooling transaction, le seguenti funzionalità SQL non sono supportate:

    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW tabelle temporanee
    • LOAD
    • Blocchi di avviso a livello di sessione
  • Se utilizzi la libreria di interfacce di database asyncpg per il pooler di Managed Connection Pooling sulle porte 3307 e 6432, devi aggiornare max_prepared_statements a un valore maggiore di 0 per attivare il supporto delle istruzioni preparate nel pooler di Managed Connection Pooling.

  • Se utilizzi Cloud SQL per PostgreSQL versione 17, l'opzione sslnegotiation=direct non è supportata.

  • Il monitoraggio dell'IP client non è supportato con il pool di connessioni gestito. Se abiliti Archivia gli indirizzi IP client in Approfondimenti sulle query, gli indirizzi IP client vengono visualizzati come local anziché l'indirizzo IP stesso.

  • Se la tua istanza utilizza il proxy di autenticazione Cloud SQL e il pool di connessioni gestito è abilitato, l'autenticazione manuale del database IAM non è supportata. Puoi utilizzare solo l'autenticazione IAM automatica.

Connessioni server utilizzate dal pool di connessioni gestito

I limiti di configurazione del database max_connections limitano il numero massimo di connessioni server che un pooler in Managed Connection Pooling può utilizzare. Cloud SQL consiglia di modificare questo valore in base ai requisiti del carico di lavoro dell'istanza e alle dimensioni dell'istanza del database. Durante il picco di carico, il numero di connessioni per l'autenticazione può diventare molto elevato.

Se utilizzi il valore predefinito max_pool_size di 50 pool nell'istanza, ti consigliamo di riservare almeno 15 connessioni server per CPU per il pool di connessioni gestito quando imposti il flag max_connections per il database. Per saperne di più sul flag max_connections, vedi Connessioni simultanee massime. Per modificare il flag max_connections per la tua istanza, consulta Configurare i flag di database.

Passaggi successivi