Configurare i limiti di memoria per i servizi

Puoi scegliere la quantità di memoria da fornire per il tuo servizio Cloud Run. Questa pagina descrive come specificare la quantità di memoria disponibile per il tuo servizio.

Informazioni sulla memoria utilizzata

Le istanze Cloud Run che superano il limite di memoria consentito vengono terminate.

La memoria disponibile per l'istanza deve essere sufficiente per:

  • Eseguire l'eseguibile del servizio, perché l'eseguibile deve essere caricato in memoria.
  • Allocare la memoria nel processo del servizio.
  • Scrivere file nel file system.

Le dimensioni dell'immagine container di cui è stato eseguito il deployment non influiscono sulla memoria disponibile per l'istanza.

Impostare e aggiornare i limiti di memoria

Puoi impostare i limiti di memoria sui servizi Cloud Run. Per impostazione predefinita, la memoria allocata a ogni istanza di una revisione è di 512 MiB e la memoria allocata per una funzione è di 256 MiB.

Memoria richiesta quando si imposta un valore della CPU

Quando imposti un valore della CPU, è necessaria la seguente memoria:

CPU Memoria richiesta
0,08 vCPU Fino a 512 MiB
0,5 vCPU Fino a 1 GiB
1 vCPU Fino a 4 GiB
2 vCPU Fino a 8 GiB
4 vCPU Da 2 a 16 GiB
6 vCPU Da 4 a 24 GiB
8 vCPU Da 4 a 32 GiB
Se utilizzi meno di 512 MiB di memoria, devi utilizzare l' ambiente di esecuzione di prima generazione.

Quantità massima di memoria

La quantità massima di memoria che puoi configurare è di 32 gibibyte (32 Gi).

Puoi applicare un limite massimo di memoria utilizzando policy dell'organizzazione personalizzate.

Memoria minima

L'impostazione della memoria minima varia a seconda che tu utilizzi l'ambiente di esecuzione di prima o seconda generazione:

  • 128 MiB per la prima generazione
  • 512 MiB per la seconda generazione

Considerazioni sui costi

Il costo del tuo servizio Cloud Run è influenzato, tra gli altri fattori, dalla configurazione della memoria e dalla durata di attività della risorsa. Il provisioning eccessivo delle risorse può aumentare i costi. Per determinare la configurazione della memoria più adatta alla tua risorsa:

  1. Stabilisci una configurazione di base iniziale.
  2. Monitora le metriche di utilizzo della memoria in Cloud Monitoring durante il test del sistema sotto carico.
  3. Modifica la configurazione in base alle esigenze.

Se l'utilizzo della memoria è costantemente basso, valuta la possibilità di ridurre la memoria allocata. Se la latenza è elevata e l'utilizzo della memoria è vicino al 100%, valuta la possibilità di aumentare la memoria allocata. Se riscontri errori di memoria insufficiente (OOM), devi aumentare la memoria allocata o modificare l'applicazione per evitare perdite di memoria e utilizzare meno memoria. Consulta la dashboard di Cloud Monitoring per comprendere meglio l'utilizzo della memoria.

Per ulteriori informazioni, consulta i prezzi di Cloud Run o stima i costi con il calcolatore prezzi.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare ed eseguire il deployment di servizi Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Se esegui il deployment di un servizio o di una funzione dal codice sorgente, devi disporre anche di altri ruoli concessi nel tuo progetto e nel account di servizio Cloud Build.

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.

Configurare i limiti di memoria

Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.

Per i servizi Cloud Run, puoi impostare i limiti di memoria utilizzando la Google Cloud console, la riga di comando gcloud o un file YAML quando crei un nuovo servizio o esegui il deployment di una nuova revisione:

Console

  1. Nella Google Cloud console, vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Servizi dal menu di navigazione di Cloud Run e fai clic su Esegui il deployment del container per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, quindi fai clic su Container, networking, sicurezza per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Container.

    immagine

    • Seleziona le dimensioni della memoria desiderate dall'elenco a discesa Memoria.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

Puoi aggiornare l'allocazione della memoria di un determinato servizio utilizzando il seguente comando:

gcloud run services update SERVICE --memory SIZE

Sostituisci SERVICE con il nome del tuo servizio e SIZE con le dimensioni della memoria desiderate. Il formato per le dimensioni è un numero a virgola fissa o mobile seguito da un'unità: G o M corrispondenti rispettivamente a gigabyte o megabyte, oppure utilizza gli equivalenti di potenza di due: Gi o Mi corrispondenti rispettivamente a gibibyte o mebibyte.

Puoi anche impostare i limiti di memoria durante il deployment utilizzando il comando:

gcloud run deploy --image IMAGE_URL --memory SIZE

Sostituisci quanto segue:

  • IMAGE_URL: un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato di LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • SIZE: i valori descritti in precedenza.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'attributo memory:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                memory: SIZE

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio Cloud Run.
    • IMAGE_URL: un riferimento all'immagine container, ad esempio, us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato di LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • SIZE: le dimensioni della memoria necessarie. Il formato è un numero a virgola fissa o mobile seguito da un'unità: G o M corrispondenti rispettivamente a gigabyte o megabyte, oppure utilizza gli equivalenti di potenza di due: Gi o Mi corrispondenti rispettivamente a gibibyte o mebibyte.
    • REVISION con un nuovo nome di revisione o eliminalo (se presente). Se fornisci un nuovo nome di revisione, questo deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con un -
      • Non supera i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una google_cloud_run_v2_service risorsa nella configurazione Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-memory-limits"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      resources {
        limits = {
          # Memory usage limit (per container)
          memory = "512Mi"
        }
      }
    }
  }
}

In template.containers.resources.limits, sostituisci 512Mi con il limite di memoria necessario per il tuo servizio.

Scrivi

Per specificare suggerimenti per CPU e memoria nel file compose.yaml, aggiungi l'attributo cpus alla definizione del servizio. Cloud Run alloca automaticamente la memoria richiesta quando imposti un valore della CPU.

  services:
    web:
      image: IMAGE
      cpus: CPU_VALUE

Sostituisci quanto segue:

  • IMAGE: l'URL dell'immagine container.
  • CPU_VALUE: il limite di CPU necessario, ad esempio 2. Questo valore determina la memoria richiesta.

Esegui il deployment dei servizi

  1. Per eseguire il deployment dei servizi, esegui il comando gcloud run compose up:

    gcloud run compose up compose.yaml
  2. Rispondi y a eventuali richieste per installare i componenti richiesti o per attivare le API.

  3. (Facoltativo) Rendi pubblico il servizio se vuoi consentire l'accesso non autenticato al servizio.

Dopo il deployment, viene visualizzato l'URL del servizio Cloud Run. Copia questo URL e incollalo nel browser per visualizzare il container in esecuzione. Puoi disattivare l'autenticazione predefinita dalla Google Cloud console.

Ottimizzare la memoria per i servizi

Per un servizio Cloud Run, puoi determinare il requisito di memoria di picco per un servizio utilizzando la seguente formula: (memoria fissa) + (memoria per richiesta) * (concorrenza del servizio)

Di conseguenza,

  • Se aumenti la concorrenza del servizio, devi anche aumentare il limite di memoria per tenere conto dell'utilizzo di picco.

  • Se riduci la concorrenza del servizio, valuta la possibilità di ridurre il limite di memoria per risparmiare sui costi della memoria utilizzata.

Per ulteriori indicazioni su come ridurre al minimo la memoria utilizzata per richiesta, consulta Suggerimenti per lo sviluppo sulle variabili globali.

Visualizzare le impostazioni del limite di memoria

Per visualizzare le impostazioni del limite di memoria corrente per il tuo servizio Cloud Run:

Console

  1. Nella Google Cloud console, vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.

  3. Fai clic sulla scheda Revisioni.

  4. Nel riquadro dei dettagli a destra, l'impostazione del limite di memoria è elencata nella scheda Container.

gcloud

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE
  2. Individua l'impostazione del limite di memoria nella configurazione restituita.