Questa pagina descrive come attivare, connetterti e monitorare il pooling delle connessioni gestite in AlloyDB per PostgreSQL. Il pool di connessioni gestito è un pattern di progettazione che ottimizza la gestione delle connessioni al database mantenendo un pool di connessioni prestabilite. Questo pool di connessioni viene poi riutilizzato dall'applicazione anziché aprire e chiudere le connessioni per ogni operazione del database, il che migliora le prestazioni e l'utilizzo delle risorse.
Con il pool di connessioni gestito, puoi scalare i workload del database ottimizzando l'utilizzo delle risorse e la latenza di connessione per le istanze AlloyDB. Il pool di connessioni gestito assegna dinamicamente le connessioni al server alle richieste in arrivo, se possibile, utilizzando il pooling e il multiplexing. Questo approccio consente di migliorare le prestazioni, in particolare per le connessioni scalate, assorbendo i picchi improvvisi delle connessioni e riutilizzando le connessioni al database esistenti. Quando utilizzi il pooling delle connessioni gestite, anziché connettersi a un database specifico, un'applicazione si connette a un pooler, che offre tempi di connessione più brevi e scalabilità per i tuoi carichi di lavoro di lettura.
Sebbene tu possa utilizzare il pooling delle connessioni gestito per qualsiasi carico di lavoro transazionale, il pooling delle connessioni gestito è più adatto per le applicazioni che contengono più connessioni di breve durata o per le applicazioni che potrebbero registrare un picco di connessioni.
Prima di iniziare
Devi connetterti all'istanza utilizzando una connessione diretta. Il pooling delle connessioni gestite non supporta la connessione con il proxy di autenticazione AlloyDB o i connettori dei linguaggi AlloyDB.
Ruoli obbligatori
Per ottenere l'autorizzazione necessaria per attivare e utilizzare il pooling delle connessioni gestite, chiedi all'amministratore di concederti il ruolo IAM Amministratore Cloud AlloyDB (roles/alloydb.admin
) nell'istanza AlloyDB.
Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene l'autorizzazione
necessaria per attivare e utilizzare il pooling delle connessioni gestite.
alloydb.instances.update
Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.
Opzioni di configurazione avanzate
Il pooling delle connessioni gestito di AlloyDB supporta le seguenti opzioni di configurazione del pooling avanzato. Puoi personalizzare il pooling delle connessioni gestite per soddisfare le esigenze della tua istanza utilizzando queste opzioni di configurazione. Puoi impostare queste configurazioni a livello di istanza utilizzando la console Google Cloud, gcloud CLI o l'API AlloyDB.
Nome configurazione | Descrizione |
---|---|
Modalità di connessione ( connection-pooling-pool-mode )
|
Per la modalità di connessione, puoi selezionare transazione (predefinita) o
sessione.
Transazione ( transaction ):
raggruppa le connessioni a livello di transazione. Una connessione al server viene assegnata a un client durante una transazione. Al termine della transazione, la connessione del server viene reinserita nel pool. Sessione ( session ):
raggruppa le connessioni a livello di sessione. Una connessione al server viene assegnata al client per tutto il tempo in cui rimane connesso. Dopo la disconnessione del client, la connessione del server viene reinserita nel pool. |
Dimensioni massime del pool ( connection-pooling-max-pool-size )
|
La dimensione massima del pool di connessioni. Il valore predefinito è 50 connessioni. |
Dimensioni minime del pool ( connection-pooling-min-pool-size )
|
La dimensione minima del pool di connessioni. Il valore predefinito è 0 connessioni. |
Timeout di connessione client inattivo ( connection-pooling-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. Puoi configurare questo parametro solo utilizzando la console Google Cloud. |
Timeout di connessione al server inattivo ( connection-pooling-server-connection-idle-timeout )
|
Il tempo in cui una connessione al server rimane inattiva prima del timeout. Questo valore può variare da 0 a 2.147.483 secondi e il valore predefinito è 600 secondi. |
Timeout di attesa della query ( connection-pooling-query-wait-timeout )
|
Il tempo di attesa di una query prima del timeout. Questo valore può variare da 0 a 2.147.483 secondi e il valore predefinito è 120 secondi. |
Istruzioni preparate massime ( connection-pooling-max-prepared-statements )
|
Il numero massimo di comandi di istruzioni preparate inviati in modalità di pooling delle transazioni. Il valore predefinito è 0. |
Ignora parametri di avvio ( connection-pooling-ignore-startup-parameters )
|
I parametri da ignorare, che non vengono monitorati nei pacchetti di avvio per impostazione predefinita. |
Durata del server ( connection-pooling-server-lifetime )
|
Il tempo massimo durante il quale una connessione al server rimane inutilizzata prima che il pooling di connessioni gestite la chiuda. Il valore predefinito è 3600 secondi. Puoi configurare questo parametro solo utilizzando la console Google Cloud. |
Per impostazione predefinita, il pooling delle connessioni gestite avvia le connessioni al server AlloyDB. Quando una connessione client viene stabilita e autenticata, il pool di connessioni gestito potrebbe creare una o più connessioni al server in modo che le dimensioni del pool corrispondano alla configurazione scelta. Alla connessione del client viene quindi assegnata una connessione del server disponibile. Le connessioni al server vengono mantenute fino a quando non vengono chiuse esplicitamente o rimangono inattive per più del periodo di timeout delle connessioni inattive del server.
Abilita il pooling delle connessioni gestite
Puoi attivare il pool di connessioni gestito per qualsiasi istanza esistente o nuova.
Attivare per una nuova istanza principale
Per creare una nuova istanza principale con il pooling delle connessioni gestite abilitato, consulta Creare un'istanza principale. Puoi attivare il pooling delle connessioni gestite per un'istanza utilizzando la console Google Cloud, Google Cloud CLI o l'API AlloyDB.
Attivare per una nuova istanza del pool di lettura
Per creare una nuova istanza del pool di lettura con il pooling delle connessioni gestito abilitato, consulta Creare un'istanza del pool di lettura. Puoi attivare il pooling delle connessioni gestite per un'istanza utilizzando la console Google Cloud, Google Cloud CLI o l'API AlloyDB.
Attivare per un'istanza esistente
Puoi attivare il pooling delle connessioni gestite per un'istanza esistente utilizzando la console Google Cloud, Google Cloud CLI o l'API AlloyDB.
Console
Vai alla pagina Cluster.
Fai clic su un cluster nella colonna Nome risorsa.
Nella pagina Panoramica, vai a Istanze nel tuo cluster.
Fai clic su Modifica principale o Modifica pool di lettura.
In Pool di connessioni gestito, seleziona la casella Attiva pool di connessioni gestito.
(Facoltativo) Per configurare le opzioni di pooling delle connessioni gestite, fai clic su Opzioni di pooling avanzate.
Puoi personalizzare le opzioni di pooling delle connessioni gestite in base alle esigenze della tua istanza. Per ulteriori informazioni, consulta le opzioni di configurazione avanzata.
Fai clic su Salva modifiche.
gcloud
Per abilitare il pooling delle connessioni gestite per un'istanza di pool principale o di lettura esistente, utilizza il seguente comando gcloud alpha alloydb instances update
:
gcloud alpha alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--enable-connection-pooling
Sostituisci quanto segue:
INSTANCE_ID
: l'ID dell'istanza AlloyDB per la quale vuoi attivare il pooling delle connessioni gestite.PROJECT_ID
: l'ID del progetto.REGION_ID
: l'ID della regione.CLUSTER_ID
: l'ID del cluster.
Dopo aver attivato il pooling di connessioni gestito, puoi personalizzare le opzioni di pooling di connessioni gestito in base alle esigenze della tua istanza impostando le opzioni di configurazione avanzata. Per ulteriori informazioni su come impostare le opzioni di configurazione, consulta Modificare il pooling delle connessioni gestite per un'istanza.
REST
Per abilitare il pooling delle connessioni gestite per un'istanza di pool principale o di lettura esistente, utilizza il seguente comando e imposta connectionPoolConfig
:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto.LOCATION_ID
: l'ID della regione del cluster.CLUSTER_ID
: l'ID del cluster. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.INSTANCE_ID
: l'ID dell'istanza.
Metodo HTTP e URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Corpo JSON della richiesta:
{
"connectionPoolConfig": {
"enabled": true
}
}
Connettiti al pool di connessioni gestito
La connessione al pool di connessioni gestito è identica alle connessioni dirette al database, tranne che su una porta diversa. Il pooling delle connessioni gestito ascolta sulla porta 6432. Qualsiasi utente aggiunto all'istanza AlloyDB può connettersi utilizzando il pooling delle connessioni gestite.
Eseguire la connessione utilizzando l'autenticazione integrata
L'esempio di comando connette l'istanza AlloyDB al pooling delle connessioni gestite utilizzando l'autenticazione integrata.
psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres
Connettiti utilizzando connessioni SSL
La modalità SSL dell'istanza si applica anche a qualsiasi connessione al
pool di connessioni gestito. Per impostazione predefinita, vengono accettate solo le connessioni SSL. Per consentire le connessioni non criptate, utilizza il seguente comando gcloud alloydb instances update
per impostare la modalità SSL dell'istanza su ALLOW_UNENCRYPTED_AND_ENCRYPTED
.
gcloud alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED
Modificare il pooling delle connessioni gestite per un'istanza
Dopo aver attivato il pool di connessioni gestito, puoi personalizzare le opzioni del pool di connessioni gestito in base alle esigenze della tua istanza utilizzando le opzioni di configurazione avanzata. Queste opzioni di configurazione sono chiamate flag di pooling delle connessioni gestite. Per ulteriori informazioni sulle opzioni di configurazione, sui relativi valori predefiniti e sugli intervalli, consulta le opzioni di configurazione avanzata.
Puoi modificare le opzioni di configurazione del pooling delle connessioni gestite per un'istanza esistente utilizzando la console Google Cloud, Google Cloud CLI o l'API AlloyDB.
Console
Vai alla pagina Cluster.
Fai clic su un cluster nella colonna Nome risorsa.
Nella pagina Panoramica, vai a Istanze nel tuo cluster.
Fai clic su Modifica istanza o Modifica pool di lettura per l'istanza che vuoi modificare.
In Pool di connessioni gestito, espandi Opzioni di pooling avanzate.
Modifica le opzioni di raggruppamento avanzate che vuoi aggiornare. Puoi modificare le seguenti opzioni:
- Modalità di connessione
- Dimensioni massime del pool
- Dimensioni minime del pool
- Connessioni massime dei client
- Timeout di connessione client inattivo
- Timeout di connessione al server inattivo
- Timeout di attesa della query(s)
- Istruzioni preparate massime
- Ignora parametri di avvio
- Durata del server
Fai clic su Aggiorna istanza.
gcloud
Per modificare le opzioni di configurazione del pooling delle connessioni gestite per un'istanza esistente, utilizza il seguente comando gcloud alpha alloydb instances update
:
gcloud alpha alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
{ \
--connection-pooling-pool-mode=CONNECTION_MODE \
| --connection-pooling-max-pool-size=MAX_POOL_SIZE \
| --connection-pooling-min-pool-size=MIN_POOL_SIZE \
| --connection-pooling-max-client-connections=MAX_CLIENT_CONNECTION \
| --connection-pooling-server-idle-timeout=SERVER_IDLE_TIMEOUT_PERIOD \
| --connection-pooling-query-wait-timeout=QUERY_WAIT_TIMEOUT_PERIOD \
| --connection-pooling-ignore-startup-parameters=IGNORE_STARTUP_PARAMETERS \
}
Sostituisci quanto segue:
INSTANCE_ID
: il nome dell'istanza AlloyDB per la quale vuoi disattivare il pooling delle connessioni gestite.PROJECT_ID
: l'ID del progetto.REGION_ID
: l'ID della regione.CLUSTER_ID
: l'ID del cluster.Puoi configurare le seguenti opzioni:
--connection-pooling-pool-mode
. Deve esseresession
otransaction
.--connection-pooling-max-pool-size
--connection-pooling-min-pool-size
--connection-pooling-max-client-connections
--connection-pooling-server-idle-timeout
--connection-pooling-query-wait-timeout
--connection-pooling-ignore-startup-parameters
REST
Per modificare le opzioni di configurazione del pooling delle connessioni gestite per un'istanza del pool di lettura esistente, utilizza il seguente comando e imposta connectionPoolConfig
:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto.LOCATION_ID
: l'ID della regione del cluster.CLUSTER_ID
: l'ID del cluster che crei. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.INSTANCE_ID
: l'ID dell'istanza che crei.Puoi configurare le seguenti opzioni:
POOL_MODE
. Deve esseresession
otransaction
.MAX_POOL_SIZE
MIN_POOL_SIZE
MAX_CLIENT_CONNECTION
SERVER_IDLE_TIMEOUT
QUERY_WAIT_TIMEOUT
IGNORE_STARTUP_PARAMETERS
Metodo HTTP e URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Corpo JSON della richiesta:
{
"connectionPoolConfig": {
"enabled": true,
"flags": {
"pool_mode": "POOL_MODE",
"max_pool_size": "MAX_POOL_SIZE",
"min_pool_size": "MIN_POOL_SIZE",
"max_client_connection": "MAX_CLIENT_CONNECTION",
"server_idle_timeout": "SERVER_IDLE_TIMEOUT",
"query_wait_timeout": "QUERY_WAIT_TIMEOUT",
"ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS"
},
}
}
Visualizzare lo stato del pool di connessioni gestito per un'istanza
Puoi visualizzare lo stato del pooling delle connessioni gestite per un'istanza utilizzando la console Google Cloud, Google Cloud CLI o l'API AlloyDB.
Console
Vai alla pagina Cluster.
Fai clic su un cluster nella colonna Nome risorsa.
Nella pagina Panoramica, individua l'istanza per cui vuoi visualizzare lo stato del pooling delle connessioni gestite. Il campo Pool di connessioni gestito indica se è abilitato o disabilitato.
gcloud
Per visualizzare lo stato del pooling delle connessioni gestite per un'istanza esistente,
utilizza il seguente comando gcloud alpha alloydb instances describe
:
gcloud alpha alloydb instances describe INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--format="value(connectionPoolConfig.enabled)"
Sostituisci quanto segue:
INSTANCE_ID
: il nome dell'istanza AlloyDB per cui vuoi modificare le opzioni di pooling delle connessioni gestite.PROJECT_ID
: l'ID del progetto.REGION_ID
: l'ID della regione.CLUSTER_ID
: l'ID del cluster.
Se il pooling delle connessioni gestite è abilitato, viene restituita la seguente risposta:
True
REST
Per visualizzare lo stato del pooling delle connessioni gestite per la tua istanza AlloyDB, utilizza il seguente comando e cerca connectionPoolConfig
:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto.LOCATION_ID
: l'ID della regione del cluster.CLUSTER_ID
: l'ID del cluster che crei. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.INSTANCE_ID
: l'ID dell'istanza che crei.
Metodo HTTP e URL:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Disattivare il pooling delle connessioni gestite per un'istanza esistente
Puoi disattivare il pooling delle connessioni gestite per un'istanza esistente utilizzando la console Google Cloud, Google Cloud CLI o l'API AlloyDB.
Console
Vai alla pagina Cluster.
Fai clic su un cluster nella colonna Nome risorsa.
Nella pagina Panoramica, vai a Istanze nel tuo cluster.
Fai clic su Modifica istanza o Modifica pool di lettura per l'istanza per la quale vuoi disattivare la connessione al pool gestito.
In Pool di connessioni gestito, deseleziona la casella Attiva pool di connessioni gestito.
Fai clic su Aggiorna istanza.
gcloud
Per disattivare il pooling delle connessioni gestite per un'istanza esistente, utilizza il seguente comando gcloud alpha alloydb instances update
:
gcloud alpha alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--no-enable-connection-pooling
Sostituisci quanto segue:
INSTANCE_ID
: il nome dell'istanza AlloyDB per la quale vuoi disattivare il pooling delle connessioni gestite.PROJECT_ID
: l'ID del progetto.REGION_ID
: l'ID della regione.CLUSTER_ID
: l'ID del cluster.
REST
Per disattivare il pooling delle connessioni gestite per un'istanza del pool di lettura esistente,
utilizza il seguente comando e imposta connectionPoolConfig
su false
:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto.LOCATION_ID
: l'ID della regione del cluster.CLUSTER_ID
: l'ID del cluster che crei. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.INSTANCE_ID
: l'ID dell'istanza che crei.
Metodo HTTP e URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Corpo JSON della richiesta:
{
"connectionPoolConfig": {
"enabled": false
}
}
Monitorare il pool di connessioni gestito
AlloyDB fornisce le seguenti metriche per aiutarti a monitorare il funzionamento del pooling delle connessioni gestite nella tua istanza. Puoi visualizzare queste metriche utilizzando Metrics Explorer.
Nome metrica | Descrizione |
---|---|
Numero di pool di connessione/database/conn_pool/num_pools |
Il numero totale di pool di connessioni per database. |
Connessioni con i clienti/database/conn_pool/client_connections |
Monitora il numero di connessioni client raggruppate in base allo stato della connessione client per database. Gli stati
inclusi in questa metrica sono:
|
Connessioni al server/database/conn_pool/server_connections |
Monitora il numero di connessioni server raggruppate in base allo stato della connessione server per database. Gli stati
inclusi in questa metrica sono:
|
Tempo di attesa medio/database/conn_pool/client_connections_avg_wait_time |
Il tempo medio trascorso da tutti i client in stato di attesa per un server in microsecondi per database. |
Per ulteriori informazioni, consulta Metriche di AlloyDB.
Limitazioni
Le seguenti limitazioni si applicano durante la release Preview e sono soggette a modifiche o rimozione al momento della release GA o successivamente:
- Il pooling delle connessioni gestite non supporta la connessione con AlloyDB Auth Proxy o i connettori dei linguaggi AlloyDB.
- Se utilizzi il pooling delle connessioni gestite nella modalità di pooling delle transazioni,
le seguenti funzionalità SQL non sono supportate:
SET/RESET
LISTEN
WITH HOLD CURSOR
PREPARE/DEALLOCATE
PRESERVE/DELETE ROW
tabelle temporaneeLOAD
- Blocchi di consulenza a livello di sessione
- Piani preparati a livello di protocollo