Configurare il pool di connessioni gestito

Questa pagina descrive come attivare, configurare e monitorare il pooling di connessioni gestito nelle istanze Cloud SQL.

Il pool di connessioni gestito ti consente di scalare i tuoi workload ottimizzando l'utilizzo delle risorse e la latenza di connessione per le tue istanze utilizzando il pooling. Per informazioni dettagliate sul pool di connessioni gestito e su come utilizzarlo per le tue istanze, consulta Panoramica del pool di connessioni gestito.

Prima di iniziare

Abilita il pool di connessioni gestito

Puoi attivare il pool di connessioni gestito per un'istanza al momento della creazione oppure modificare un'istanza esistente per attivarlo.

Abilitare il pool di connessioni gestito per una nuova istanza

Per creare una nuova istanza con il pool di connessioni gestito abilitato, vedi Crea istanze. Puoi attivare il pool di connessioni gestito per una nuova istanza utilizzando solo gcloud CLI o l'API Cloud SQL.

Abilitare il pool di connessioni gestito per un'istanza esistente

Per abilitare il pool di connessioni gestito per un'istanza esistente:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Trova l'istanza per cui vuoi abilitare il pool di connessioni gestito. Per aprire la pagina Panoramica dell'istanza, fai clic sul nome dell'istanza.

  3. Fai clic su Modifica.

  4. In Personalizza la tua istanza, espandi Connessioni.

  5. Per abilitare il pool di connessioni gestito, seleziona la casella Abilita pool di connessioni gestito.

  6. Fai clic su Salva.

gcloud

Utilizza il comando gcloud sql instances per abilitare il pool di connessioni gestito.

  gcloud sql instances patch INSTANCE_NAME \
  --enable-connection-pooling

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza Cloud SQL.

REST v1

Utilizza il seguente comando e imposta connectionPoolingEnabled:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": true
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Utilizza il seguente comando e imposta connectionPoolingEnabled:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": true
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Terraform

Utilizza la seguente risorsa Terraform:

resource "google_sql_database_instance" "postgres_managed_connection_pooling_enable" {
  name                = "postgres-instance-managed-connection-pooling-enable"
  region              = "us-central1"
  database_version    = "POSTGRES_16"
  deletion_protection = false

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    connection_pool_config {
      connection_pooling_enabled = true # Set to true here
    }
  }
}

Modifica il pool di connessioni gestito per un'istanza

Dopo aver abilitato il pool di connessioni gestito, puoi personalizzarlo in base alle esigenze della tua istanza utilizzando le opzioni di configurazione avanzate. Queste opzioni di configurazione sono chiamate flag del pool di Managed Connection Pooling. Le configurazioni aggiunte al pool di connessioni gestito vengono applicate a tutti i pool di connessioni utilizzati dall'istanza. Per ulteriori informazioni sulle opzioni di configurazione avanzata, sui relativi valori predefiniti e intervalli, consulta Opzioni di configurazione avanzata.

Per modificare le opzioni di configurazione avanzate del pool di connessioni gestito per un'istanza, procedi nel seguente modo:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Trova l'istanza per cui vuoi abilitare il pool di connessioni gestito. Per aprire la pagina Panoramica dell'istanza, fai clic sul nome dell'istanza.

  3. Fai clic su Modifica.

  4. In Personalizza la tua istanza, espandi Connessioni.

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

    Modifica le opzioni avanzate di pooling che vuoi aggiornare.

  6. Fai clic su Salva.

gcloud

Utilizza il comando gcloud sql instances per modificare le opzioni di configurazione.

  gcloud sql instances patch INSTANCE_NAME \
  --connection-pool-flags=CONFIGURATION_NAME=CONFIGURATION_VALUE

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza Cloud SQL.
  • CONFIGURATION_NAME: il nome dell'opzione di configurazione. Per un elenco di tutte le opzioni di configurazione avanzata, consulta Opzioni di configurazione avanzata.
  • CONFIGURATION_VALUE: il nuovo valore per l'opzione di configurazione selezionata.

REST v1

Per modificare il pooling di connessioni gestito Configurazioni avanzate, utilizza il seguente comando e imposta ConnectionPoolConfig:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
  "settings": {
    "connectionPoolConfig": {
      "flags":
      [
        {
          "name": "CONFIGURATION_NAME",
          "value":"CONFIGURATION_VALUE"
        }
      ]
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Per modificare il pooling di connessioni gestito Configurazioni avanzate, utilizza il seguente comando e imposta ConnectionPoolConfig:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
  "settings": {
    "connectionPoolConfig": {
      "flags":
      [
        {
          "name": "CONFIGURATION_NAME",
          "value":"CONFIGURATION_VALUE"
        }
      ]
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Terraform

Per modificare il pool di connessioni gestito Configurazioni avanzate, utilizza la seguente risorsa Terraform:

resource "google_sql_database_instance" "postgres_managed_connection_pooling_modify" {
  name                = "postgres-instance-managed-connection-pooling-modify"
  region              = "us-central1"
  database_version    = "POSTGRES_16"
  deletion_protection = false

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    connection_pool_config {
      connection_pooling_enabled = true
      flags {
        name  = "max_pool_size" # Modify the value of an existing flag
        value = "10"
      }
    }
  }
}

Disabilitare il pool di connessioni gestito per un'istanza

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

Per disattivare il pool di connessioni gestito per un'istanza:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Trova l'istanza per cui vuoi disattivare il pool di connessioni gestito. Per aprire la pagina Panoramica dell'istanza, fai clic sul nome dell'istanza.

  3. Fai clic su Modifica.

  4. In Personalizza la tua istanza, espandi Connessioni.

  5. Per disattivare il pool di connessioni gestito, deseleziona la casella Abilita pool di connessioni gestito.

  6. Fai clic su Salva.

gcloud

Utilizza il comando gcloud sql instances per disabilitare il pool di connessioni gestito.

  gcloud sql instances patch INSTANCE_NAME \
  --no-enable-connection-pooling

Sostituisci quanto segue:

  • PROJECT_ID: il nome dell'istanza Cloud SQL.

REST v1

Per disattivare il pool di connessioni gestito per un'istanza, utilizza il seguente comando e imposta connectionPoolingEnabled:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": false
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Per disattivare il pool di connessioni gestito per un'istanza, utilizza il seguente comando e imposta connectionPoolingEnabled:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corpo JSON della richiesta:

{
  "settings": {
    "connectionPoolConfig": {
      "connectionPoolingEnabled": false
    }
  }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Terraform

Per disattivare il pool di connessioni gestito per un'istanza, utilizza la seguente risorsa Terraform:

resource "google_sql_database_instance" "postgres_managed_connection_pooling_disable" {
  name                = "postgres-instance-managed-connection-pooling-disable"
  region              = "us-central1"
  database_version    = "POSTGRES_16"
  deletion_protection = false

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    connection_pool_config {
      # Set to false to disable Managed Connection Pooling. You can also remove the block entirely.
      connection_pooling_enabled = false
    }
  }
}

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 , gcloud CLI o l'API Cloud SQL.

Per visualizzare lo stato del pool di connessioni gestito per un'istanza Cloud SQL Enterprise Plus, procedi nel seguente modo:

Console

  1. Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Trova l'istanza per cui vuoi visualizzare lo stato del pool di connessioni gestito. Per aprire la pagina Panoramica dell'istanza, fai clic sul nome dell'istanza.

    La sezione Connessioni mostra se il pool di connessioni gestito è abilitato o disabilitato.

gcloud

Utilizza il comando gcloud sql instances describe per visualizzare lo stato del pool di connessioni gestito per un'istanza:

  gcloud sql instances describe INSTANCE_NAME
  --format="value(settings.connectionPoolConfig.connectionPoolingEnabled)"

Sostituisci quanto segue:

  • PROJECT_ID: il nome dell'istanza Cloud SQL.

    Se il pool di connessioni gestito è abilitato, viene restituita la seguente risposta:

    connectionPoolingEnabled: true

REST v1

Per visualizzare lo stato del pool di connessioni gestito per l'istanza Cloud SQL, utilizza il seguente comando e cerca connectionPoolingEnabled:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-custom-2-7680",
    "kind": "sql#settings",
    "availabilityType": "REGIONAL",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
  ...
  "createTime": "2023-06-14T18:48:34.975Z",
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
  "pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
  "dnsName": "DNS_NAME"
}

REST v1beta4

Per visualizzare lo stato del pool di connessioni gestito per l'istanza Cloud SQL, utilizza il seguente comando e cerca connectionPoolingEnabled:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

Metodo HTTP e URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-custom-2-7680",
    "kind": "sql#settings",
    "availabilityType": "REGIONAL",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
  ...
  "createTime": "2023-06-14T18:48:34.975Z",
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
  "pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
  "dnsName": "DNS_NAME"
}

Monitorare il pool di connessioni gestito

Puoi monitorare il funzionamento del pooling di connessioni gestito nelle tue istanze Cloud SQL utilizzando le seguenti metriche del pooling di connessioni gestito di Cloud SQL:

Nome metrica Descrizione
num_pools Il numero totale di pool di connessioni per database.
client_connection Monitora il conteggio delle connessioni in base allo stato della connessione client. 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 al server per database.
server_connections Monitora il conteggio delle connessioni server in base allo stato della connessione server. Gli stati inclusi in questa metrica sono:
  • active: il numero di connessioni attive per database.
  • waiting: il numero di connessioni server inattive per database.
client_connections_avg_wait_time Il tempo medio trascorso da tutti i client in stato di attesa per un server.

Per ulteriori informazioni su queste metriche, consulta Metriche Cloud SQL. Per visualizzare queste metriche utilizzando la console Google Cloud , consulta Visualizzare le metriche nella pagina di panoramica dell'istanza Cloud SQL.

Passaggi successivi