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:
Porta TCP 5432: utilizzata per le connessioni dirette dal server di database Postgres. Questo è il numero di porta predefinito per la connessione diretta tramite il client psql.
Porta TCP 6432: utilizzata per le connessioni dirette dal server Managed Connection Pooling. Per connetterti utilizzando questa porta, specifica
psql -p 6432
quando ti connetti direttamente utilizzando il client psql.Quando utilizzi questa porta, puoi utilizzare qualsiasi opzione di autenticazione IAM.
Porta TCP 3307: utilizzata solo per le connessioni del proxy di autenticazione Cloud SQL da un server di pooling delle connessioni gestito. Quando utilizzi il proxy di autenticazione Cloud SQL per connetterti al pool di connessioni gestito, questo numero di porta viene configurato con il client proxy di autenticazione Cloud SQL e non può essere modificato.
Puoi utilizzare qualsiasi opzione di autenticazione IAM, o l'autenticazione automatica IAM dei database con questa porta.
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 poolingtransaction
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 temporaneeLOAD
- 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.