Configurare il pool di connessioni gestito

Questa pagina descrive come attivare, connettersi e monitorare il pooling di connessioni gestito 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 riutilizzato dall'applicazione anziché aprire e chiudere le connessioni per ogni operazione del database, il che migliora le prestazioni e l'utilizzo delle risorse.

Utilizzando il pool di connessioni gestito, puoi scalare i carichi di lavoro del database ottimizzando l'utilizzo delle risorse e la latenza della connessione per le istanze AlloyDB. Il pool di connessioni gestito assegna dinamicamente le connessioni server alle richieste in entrata quando possibile utilizzando il pooling e il multiplexing. Questo approccio migliora le prestazioni, soprattutto per le connessioni scalate, assorbendo i picchi improvvisi di connessione e riutilizzando le connessioni al database esistenti. Anziché connettersi a un database specifico, quando utilizzi il pooling delle connessioni gestite, un'applicazione si connette a un pooler, che fornisce tempi di connessione più brevi e scalabilità per i carichi di lavoro di lettura.

Sebbene tu possa utilizzare il pool di connessioni gestito per qualsiasi carico di lavoro transazionale, il pool di connessioni gestito è più adatto alle applicazioni che contengono più connessioni di breve durata o alle applicazioni che potrebbero subire un aumento improvviso delle connessioni.

Prima di iniziare

Devi connetterti all'istanza utilizzando una connessione diretta. Il pool di connessioni gestito non supporta la connessione con il proxy di autenticazione AlloyDB o i connettori dei linguaggi AlloyDB.

Ruoli obbligatori

Per ottenere l'autorizzazione necessaria per abilitare e utilizzare il pooling delle connessioni gestito, chiedi all'amministratore di concederti il ruolo IAM Cloud AlloyDB Admin (roles/alloydb.admin) nell'istanza AlloyDB. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene l'autorizzazione alloydb.instances.update necessaria per abilitare e utilizzare il pool di connessioni gestito.

Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Opzioni di configurazione avanzate

Il pool di connessioni gestito di AlloyDB supporta le seguenti opzioni di configurazione avanzate del pool. 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 consoleGoogle Cloud , gcloud CLI o l'API AlloyDB.

Nome della configurazione Descrizione
Modalità di connessione
(connection-pooling-pool-mode)
Per la modalità di connessione, puoi selezionare transazione (impostazione 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 al server viene reinserita nel pool.

Sessione (session):
Raggruppa le connessioni a livello di sessione. Una connessione 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 per ogni coppia utente e database. 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(sec)
(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.
Timeout di connessione al server inattivo(sec)
(connection-pooling-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.
Timeout di attesa della query(sec)
(connection-pooling-query-wait-timeout)
Il tempo di attesa di una query prima che scada. 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 nella modalità di pooling delle transazioni. Il valore predefinito è 0. Puoi configurare questo parametro solo utilizzando la console Google Cloud .
Ignora parametri di avvio
(connection-pooling-ignore-startup-parameters)
I parametri che vuoi ignorare e che non vengono monitorati nei pacchetti di avvio per impostazione predefinita.
Durata del server(sec)
(connection-pooling-server-lifetime)
Il tempo massimo in cui una connessione server rimane inutilizzata prima che il pool di connessioni gestite la chiuda. Il valore predefinito è 3600 secondi.

Per impostazione predefinita, il pool di connessioni gestito avvia le connessioni al server AlloyDB. Quando viene stabilita e autenticata una connessione client, il pool di connessioni gestito potrebbe creare una o più connessioni server in modo che le dimensioni del pool corrispondano alla configurazione scelta. Alla connessione client viene quindi assegnata una connessione server disponibile. Le connessioni al server vengono mantenute finché non vengono chiuse esplicitamente o rimangono inattive per un periodo di tempo superiore al timeout di connessione server inattivo.

Abilita il pool di connessioni gestito

Puoi attivare il pool di connessioni gestito per qualsiasi istanza esistente o nuova.

Abilita per una nuova istanza primaria

Per creare una nuova istanza primaria con il pool di connessioni gestito abilitato, consulta Creare un'istanza primaria. Puoi abilitare il pooling di connessioni gestito per un'istanza utilizzando la consoleGoogle Cloud , Google Cloud CLI o l'API AlloyDB.

Abilitare per una nuova istanza del pool di lettura

Per creare una nuova istanza del pool di lettura con il pool di connessioni gestito abilitato, consulta la sezione Creazione di un'istanza del pool di lettura. Puoi abilitare il pooling di connessioni gestito per un'istanza utilizzando la consoleGoogle Cloud , Google Cloud CLI o l'API AlloyDB.

Abilitare per un'istanza esistente

Puoi attivare il pooling delle connessioni gestito per un'istanza esistente utilizzando la consoleGoogle Cloud , Google Cloud CLI o l'API AlloyDB.

Console

  1. Vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic su un cluster nella colonna Nome risorsa.

  3. Nella pagina Panoramica, vai a Istanze nel tuo cluster.

  4. Fai clic su Modifica principale o Modifica pool di lettura.

  5. Nella sezione Pool di connessioni gestito, seleziona la casella Abilita pool di connessioni gestito.

  6. (Facoltativo) Per configurare le opzioni di pooling delle connessioni gestite, fai clic su Opzioni avanzate di pooling.

    Puoi personalizzare le opzioni di pooling delle connessioni gestito per soddisfare le esigenze della tua istanza. Per ulteriori informazioni, consulta Opzioni di configurazione avanzate.

  7. Fai clic su Salva modifiche.

gcloud

Per abilitare il pool di connessioni gestito per un'istanza di pool di lettura o primaria 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 cui vuoi attivare il pool di connessioni gestito.
  • PROJECT_ID: l'ID del progetto
  • REGION_ID: l'ID della regione.
  • CLUSTER_ID: l'ID del cluster.

Dopo aver abilitato il pool di connessioni gestito, puoi personalizzare le opzioni del pool di connessioni gestito per soddisfare le esigenze della tua istanza impostando le opzioni di configurazione avanzate. Per ulteriori informazioni su come impostare le opzioni di configurazione, consulta Modificare il pool di connessioni gestito per un'istanza.

REST

Per abilitare il pooling di connessioni gestito per un'istanza di pool primario o di lettura esistente, utilizza il seguente comando e imposta connectionPoolConfig:

Prima di utilizzare i dati della richiesta, effettua 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
  }
}

Connettersi 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 pool di connessioni gestito è in ascolto sulla porta 6432. Qualsiasi utente aggiunto all'istanza AlloyDB può connettersi utilizzando il pool di connessioni gestito.

Connettersi utilizzando l'autenticazione integrata

L'esempio di comando connette l'istanza AlloyDB al pool di connessioni gestito utilizzando l'autenticazione integrata.

psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres

Connessione tramite connessioni SSL

La modalità SSL dell'istanza si applica anche a tutte le connessioni al pool di connessioni gestito. Per impostazione predefinita, vengono accettate solo le connessioni SSL. Per consentire 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

Modifica il pool di connessioni gestito per un'istanza

Dopo aver abilitato 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 avanzate. Queste opzioni di configurazione sono chiamate flag di pooling delle connessioni gestite. Per ulteriori informazioni sulle opzioni di configurazione, sui valori predefiniti e sugli intervalli, consulta Opzioni di configurazione avanzate.

Puoi modificare le opzioni di configurazione del pool di connessioni gestito per un'istanza esistente utilizzando la console Google Cloud , Google Cloud CLI o l'API AlloyDB.

Console

  1. Vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic su un cluster nella colonna Nome risorsa.

  3. Nella pagina Panoramica, vai a Istanze nel tuo cluster.

  4. Fai clic su Modifica istanza o Modifica pool di lettura per l'istanza che vuoi modificare.

  5. Nella sezione Pool di connessioni gestito, espandi Opzioni avanzate di pooling.

  6. Modifica le opzioni avanzate di pooling 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(sec)
    • Timeout di attesa query(sec)
    • Istruzioni preparate massime
    • Ignora parametri di avvio
    • Durata del server(sec)
  7. Fai clic su Aggiorna istanza.

gcloud

Per modificare le opzioni di configurazione del pool di connessioni gestito 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 \
      | --connection-pooling-server-lifetime=SERVER_LIFETIME \
      | --connection-pooling-client-connection-idle-timeout=CLIENT_CONNECTION_IDLE_TIMEOUT \
    }

Sostituisci quanto segue:

  • INSTANCE_ID: il nome dell'istanza AlloyDB per cui vuoi disattivare il pool di connessioni gestito.
  • 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 essere session o transaction.
    • --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
    • --connection-pooling-server-lifetime
    • --connection-pooling-client-connection-idle-timeout

REST

Per modificare le opzioni di configurazione del pooling di connessioni gestito per un'istanza del pool di lettura esistente, utilizza il seguente comando e imposta connectionPoolConfig:

Prima di utilizzare i dati della richiesta, effettua 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 essere session o transaction.
    • 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"
    },
  }
}

Visualizza lo stato del pool di connessioni gestito per un'istanza

Puoi visualizzare lo stato del pool di connessioni gestito per un'istanza utilizzando la console Google Cloud , Google Cloud CLI o l'API AlloyDB.

Console

  1. Vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic su un cluster nella colonna Nome risorsa.

  3. Nella pagina Panoramica, trova l'istanza per cui vuoi visualizzare lo stato del pool di connessioni gestito. Il campo Pool di connessioni gestito mostra se è abilitato o disabilitato.

gcloud

Per visualizzare lo stato del pool di connessioni gestito 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 pool di connessioni gestito è abilitato, viene restituita la seguente risposta:

True

REST

Per visualizzare lo stato del pooling di connessioni gestito per la tua istanza AlloyDB, utilizza il seguente comando e cerca connectionPoolConfig:

Prima di utilizzare i dati della richiesta, effettua 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

Disabilitare il pool di connessioni gestito per un'istanza esistente

Puoi disattivare il pool di connessioni gestito per un'istanza esistente utilizzando la consoleGoogle Cloud , Google Cloud CLI o l'API AlloyDB.

Console

  1. Vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic su un cluster nella colonna Nome risorsa.

  3. Nella pagina Panoramica, vai a Istanze nel tuo cluster.

  4. Fai clic su Modifica istanza o Modifica pool di lettura per l'istanza per cui vuoi disattivare il pool di connessioni gestito.

  5. Nella sezione Pool di connessioni gestito, deseleziona la casella Abilita pool di connessioni gestito.

  6. Fai clic su Aggiorna istanza.

gcloud

Per disabilitare il pool di connessioni gestito 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 cui vuoi disattivare il pool di connessioni gestito.
  • 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 gestito per un'istanza del pool di lettura esistente, utilizza il seguente comando e imposta connectionPoolConfig su false:

Prima di utilizzare i dati della richiesta, effettua 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 pool di connessioni gestito nella tua istanza. Puoi visualizzare queste metriche utilizzando Metrics Explorer.

Nome metrica Descrizione
Numero di pool di connessioni

/database/conn_pool/num_pools
Il numero totale di pool di connessioni per database.
Connessioni client

/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:
  • active: il numero di connessioni attive per database, inclusi i client inattivi che non hanno richieste di query in attesa.
  • waiting: il numero di client in attesa di una connessione server per database.
Connessioni server

/database/conn_pool/server_connections
Monitora il numero di connessioni server raggruppate per stato della connessione server per database. Gli stati inclusi in questa metrica sono:
  • active: il numero di connessioni attive per database.
  • idle: il numero di connessioni server inattive per database.
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 AlloyDB.

Limitazioni

Durante la release Anteprima si applicano le seguenti limitazioni, che sono soggette a modifiche o rimozione al momento della release GA o successivamente:

  • Il pool di connessioni gestito non supporta la connessione con il proxy di autenticazione AlloyDB o i connettori dei linguaggi AlloyDB.
  • Se utilizzi il pooling di connessioni gestito 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 temporanee
    • LOAD
    • Blocchi di avviso a livello di sessione
    • Piani preparati a livello di protocollo
  • Il pool di connessioni gestito non è supportato per le connessioni IP pubbliche.