Allocazione della CPU (servizi)

Per impostazione predefinita, alle istanze Cloud Run viene allocata solo CPU durante l'elaborazione delle richieste, l'avvio e l'arresto del container. (Consultare ciclo di vita dell'istanza). Puoi modificare questo comportamento in modo che la CPU sia sempre allocata e disponibile anche quando non ci sono richieste in entrata. L'impostazione della CPU da allocare sempre è utile per eseguire attività in background di breve durata e altre attività di elaborazione asincrone.

Illustrazione delle modalità di allocazione della CPU

Anche se la CPU viene sempre allocata, Cloud Run con scalabilità automatica è ancora attiva e può terminare le istanze se non sono necessarie per gestire il traffico in entrata o l'utilizzo attuale della CPU al di fuori delle richieste. Un l'istanza non rimarrà mai inattiva per più di 15 minuti dopo l'elaborazione di una richiesta, a meno che non venga mantenuta attiva utilizzando numero minimo di istanze.

Combinazione di CPU sempre allocata con un numero minimo di istanze minime rende operative alcune istanze con accesso completo alla CPU per l'elaborazione in background. Quando usi questo pattern, Cloud Run applica la scalabilità automatica delle istanze anche se un servizio usa la CPU al di fuori delle richieste.

Se usi probe di controllo di integrità, la CPU viene allocata per ogni probe. Consulta probe di integrità dei container dettagli di fatturazione.

Impatto sui prezzi

Se scegli la CPU da allocare solo durante l'elaborazione delle richieste, addebitati per richiesta e solo quando l'istanza elabora una richiesta. Se scegli l'impostazione CPU sempre allocata, ti vengono addebitati i costi dell'intero ciclo di vita dell'istanza. Consulta le Tabelle dei prezzi di Cloud Run per maggiori dettagli.

Il motore per suggerimenti di Google esamina automaticamente il traffico ricevuto il tuo servizio Cloud Run nell'ultimo mese e ti consiglierà di passare dalla CPU allocata durante le richieste a CPU sempre allocata, se è più economica.

Come scegliere l'allocazione appropriata della CPU

La scelta dell'allocazione della CPU appropriata per il tuo caso d'uso dipende diversi fattori, come modelli di traffico, esecuzione in background e costi, ognuno dei quali è descritto nelle sezioni seguenti.

Considerazioni sui pattern di traffico

  • Si consiglia di utilizzare CPU allocata solo durante l'elaborazione delle richieste quando in entrata Il traffico è sporadico, intenso o intenso.
  • Si consiglia di utilizzare CPU sempre allocata quando il traffico in entrata è costante, che variano lentamente.

Considerazioni sull'esecuzione in background

La selezione di CPU sempre allocata ti consente di eseguire attività in background di breve durata altre elaborazioni asincrone dopo la restituzione delle risposte. Ad esempio:

  • Sfruttare agenti di monitoraggio come OpenTelemetry che potrebbero presumere di essere in grado di vengono eseguiti in background.
  • Utilizzo di goroutine di Go, asincrono Node.js, thread Java e coroutine Kotlin.
  • Utilizzo di framework di applicazioni che si basano su pianificazione/background integrati le funzionalità di machine learning.

Istanze inattive, incluse quelle mantenute in uso utilizzando un numero minimo di istanze, può essere arrestata in qualsiasi momento. Se devi completare attività in sospeso prima il container è terminato, puoi intercettare SIGTERM concedere a un'istanza un tempo di tolleranza di 10 secondi prima che venga arrestata.

Valuta la possibilità di utilizzare Cloud Tasks per eseguire attività asincrone. Cloud Tasks ritenta automaticamente le attività non riuscite e supporta i tempi di esecuzione fino a 30 minuti.

Considerazioni sui costi

Se al momento utilizzi CPU allocata solo durante l'elaborazione delle richieste, La CPU sempre allocata è probabilmente più economica se:

  • Il tuo servizio Cloud Run sta elaborando un numero elevato di richieste attuali a un ritmo piuttosto costante.
  • Non vedi molte parti di "inattivo" quando si esaminano metrica del conteggio delle istanze.

Puoi utilizzare il Calcolatore prezzi per stimare le differenze di costo.

Considerazioni sulla scalabilità automatica

Cloud Run scala automaticamente il numero di istanze di container.

Per un servizio impostato su CPU allocata solo durante l'elaborazione delle richieste: Cloud Run scala automaticamente il numero di istanze in base alla CPU solo durante l'elaborazione delle richieste.

Per un servizio impostato su CPU sempre allocata, Cloud Run scala automaticamente il numero di istanze in base all'utilizzo della CPU per l'intero ciclo di vita un'istanza di container, tranne quando si aumenta la scalabilità da e verso zero, in cui utilizza solo le richieste.

Ruoli obbligatori

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

Per un elenco di ruoli e autorizzazioni IAM associati Cloud Run, consulta Ruoli IAM di Cloud Run e le autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run si interfaccia con Le API Google Cloud, come le librerie client di Cloud, consultano guida alla configurazione dell'identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta autorizzazioni di deployment e gestire l'accesso.

Imposta e aggiorna l'allocazione della CPU

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

Se scegli l'opzione CPU sempre allocata, devi specificare almeno 512 MiB di memoria.

Per impostazione predefinita, la CPU viene allocata solo durante l'elaborazione delle richieste per ogni container in esecuzione in un'istanza Compute Engine. Puoi modificare questa impostazione utilizzando la console Google Cloud, lo strumento riga di comando o un file YAML quando crei un nuovo servizio esegui il deployment di una nuova revisione:

Console

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

    Vai a Cloud Run

  2. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un'istanza servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila il servizio iniziale pagina delle impostazioni come preferisci, poi fai clic su Container, volumi, networking, sicurezza per espandere pagina di configurazione del servizio.

  4. Fai clic sulla scheda Contenitore.

    immagine

    • Seleziona l'allocazione della CPU desiderata in Allocazione e prezzi delle CPU. Seleziona La CPU viene allocata solo durante l'elaborazione delle richieste affinché le istanze ricevano CPU solo quando ricevono richieste. Seleziona La CPU è sempre allocata per allocare la CPU per l'intera durata dei di Compute Engine.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

Puoi aggiornare l'allocazione della CPU. Per impostare le CPU da allocare sempre per un determinato servizio:

gcloud run services update SERVICE --no-cpu-throttling 

Sostituisci SERVICE con il nome del tuo servizio.

Per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste:

gcloud run services update SERVICE --cpu-throttling 

Puoi anche impostare l'allocazione della CPU deployment. Per impostare le CPU in modo che siano sempre allocate:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

Per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste:

gcloud run deploy --image IMAGE_URL --cpu-throttling

Sostituisci IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

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 cpu:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run
    • BOOLEAN con true per impostare l'allocazione della CPU solo durante l'elaborazione delle richieste o false per impostare la CPU su sempre allocata.
    • REVISION con un nuovo nome di revisione o eliminala (se presente). Se fornisci un nuovo nome per la revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non deve superare i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il comando seguente:

    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 risorsa google_cloud_run_v2_service in Terraform sotto template.containers.resources.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

Visualizza le impostazioni di allocazione della CPU

Per visualizzare le impostazioni di allocazione della CPU attuali per il tuo Servizio Cloud Run:

Console

  1. Nella console Google Cloud, vai a 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 di allocazione della CPU è elencato nella scheda Contenitore.

gcloud

  1. Utilizza questo comando:

    gcloud run services describe SERVICE
  2. Individua l'impostazione di allocazione della CPU nel configurazione.