Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Scopri come impostare limiti per la memoria utilizzata dalle istanze dei container in Knative serving.
Informazioni sull'utilizzo della memoria
Le istanze dei container Knative serving che superano il limite di memoria consentito vengono interrotte.
I seguenti elementi vengono conteggiati ai fini della memoria disponibile dell'istanza contenitore:
Eseguire l'eseguibile dell'applicazione (poiché l'eseguibile deve essere caricato nella memoria)
Allocazione di memoria nel processo di applicazione
Scrittura di file nel file system
Le dimensioni dell'immagine del contenitore di cui è stato eseguito il deployment non vengono conteggiate ai fini del calcolo della memoria disponibile.
Quantità massima di memoria
La quantità massima di memoria che puoi configurare è limitata dalla configurazione
del tuo cluster GKE.
Ottimizzazione della memoria
Puoi determinare il requisito di memoria di picco per un servizio utilizzando quanto segue: (Memoria di attesa) + (Memoria per richiesta) * (Contemporaneità del servizio)
Di conseguenza,
Se aumenti la concorrenza del servizio, devi anche aumentare il limite di memoria per tenere conto dei picchi di utilizzo.
Se riduci la concorrenza del servizio, valuta la possibilità di ridurre il limite di memoria per risparmiare sui costi di utilizzo della memoria.
Impostazione e aggiornamento dei limiti di memoria
Qualsiasi modifica alla configurazione comporta la
creazione di una nuova revisione. Anche le revisioni successive acquisiranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.
Puoi impostare i limiti di memoria utilizzando la Google Cloud console,
la CLI Google Cloud o un file YAML quando esegui il deployment di un nuovo
servizio o aggiorni un servizio esistente e
esegui il deployment di una revisione:
Console
Vai alla pubblicazione Knative nella Google Cloud console:
Fai clic su Crea servizio se stai configurando un nuovo servizio di destinazione del deployment. Se stai configurando un servizio esistente, fai clic sul servizio, poi su Modifica ed esegui il deployment di una nuova revisione.
In Impostazioni avanzate, fai clic su Contenitore.
Seleziona la dimensione della memoria che preferisci dall'elenco a discesa Memoria allocata.
Fai clic su Avanti per passare alla sezione successiva.
Nella sezione Configura il funzionamento del trigger per questo servizio,
seleziona la connettività che vuoi utilizzare per richiamare il servizio.
Fai clic su Crea per eseguire il deployment dell'immagine in Knative Serving e attendi
il completamento del deployment.
Riga di comando
Per i servizi esistenti, aggiorna il limite di memoria eseguendo il comando gcloud run services update con il parametro --memory:
gcloudrunservicesupdateSERVICE--memorySIZE
Sostituisci:
SERVICE con il nome del servizio.
SIZE con la dimensione della memoria desiderata. Il formato per la dimensione è un numero a virgola fissa o mobile seguito da un'unità: G, M o K, che corrispondono rispettivamente a gigabyte, megabyte o kilobyte oppure puoi utilizzare gli equivalenti di potenze di 2: Gi, Mi, Ki, che corrispondono rispettivamente a gibibyte, mebibyte o kibibyte.
Per i nuovi servizi, imposta il limite di memoria eseguendo il comando gcloud run deploy con il parametro --memory:
IMAGE_URL con un riferimento all'immagine del container, ad esempio gcr.io/cloudrun/hello.
SIZE con la dimensione della memoria desiderata. Il formato per la dimensione è un numero a virgola fissa o mobile seguito da un'unità: G, M o K, che corrispondono rispettivamente a gigabyte, megabyte o kilobyte oppure puoi utilizzare gli equivalenti di potenze di 2: Gi, Mi, Ki, che corrispondono rispettivamente a gibibyte, mebibyte o kibibyte.
YAML
.
Puoi scaricare la configurazione di un servizio esistente in un
file YAML con il comando gcloud run services describe utilizzando il
--format=export flag.
Puoi quindi modificare il file YAML e implementare queste modifiche con il comando gcloud run services replace.
Devi assicurarti di modificare solo gli attributi specificati.
Scarica la configurazione del servizio in un file denominato
service.yaml nello spazio di lavoro locale:
Sostituisci SIZE con la dimensione della memoria desiderata.
Il formato è un numero a virgola fissa o mobile seguito da un'unità:G, M o K corrispondenti rispettivamente a gigabyte, megabyte o kilobyte oppure puoi utilizzare gli equivalenti di potenza di due: Gi, Mi, Ki corrispondente rispettivamente a gibibyte, mebibyte o kibibyte.
Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-31 UTC."],[],[],null,["# Configuring memory limits\n\nLearn how to set limits for the memory used by your container instances in\nKnative serving.\n\nUnderstanding memory usage\n--------------------------\n\nKnative serving container instances that exceed their allowed\nmemory limit are terminated.\n\nThe following count towards the available memory of your container instance:\n\n- Running the application executable (as the executable must be loaded to memory)\n- Allocating memory in your application process\n- Writing files to the filesystem\n\nThe size of the deployed container image does not count towards the available\nmemory.\n\nMaximum amount of memory\n------------------------\n\nThe maximum amount of memory you can configure is limited by the configuration\nof your GKE cluster.\n\nOptimizing memory\n-----------------\n\nYou can determine the peak memory requirement for a service using the\nfollowing: **(Standing Memory) + (Memory per Request) \\* (Service Concurrency)**\n\nAccordingly,\n\n- If you raise the concurrency of your service, you should also\n increase the memory limit to account for peak usage.\n\n- If you lower the concurrency of your service, consider reducing the memory\n limit to save on memory usage costs.\n\nFor more guidance on minimizing per request memory usage read\n[Development Tips on Global Variables](/kubernetes-engine/enterprise/knative-serving/docs/tips/general#using_global_variables).\n\nSetting and updating memory limits\n----------------------------------\n\nAny configuration change leads to the\ncreation of a new revision. Subsequent revisions will also automatically get\nthis configuration setting unless you make explicit updates to change it.\n\nYou can set memory limits using the Google Cloud console,\nthe Google Cloud CLI, or a YAML file when you deploy a new\n[service](/kubernetes-engine/enterprise/knative-serving/docs/deploying#service) or update an existing service and\ndeploy a [revision](/kubernetes-engine/enterprise/knative-serving/docs/deploying#revision): \n\n### Console\n\n\n1. Go to Knative serving in the Google Cloud console:\n\n [Go to Knative serving](https://console.cloud.google.com/kubernetes/run)\n2. Click **Create Service** if you are configuring a\n new service you are deploying to. If you are configuring an\n existing service, click on the service, then click\n **Edit \\& Deploy New Revision**.\n\n3. Under *Advanced settings* , click **Container**.\n\n4. Select the desired memory size from the\n **Memory allocated** dropdown list.\n\n5. Click **Next** to continue to the next section.\n\n6. In the **Configure how this service is triggered** section,\n select which connectivity you would like to use to invoke the service.\n\n7. Click **Create** to deploy the image to Knative serving and wait\n for the deployment to finish.\n\n### Command line\n\n- For existing services, update the memory limit by running the\n `gcloud run services update` command with the\n [`--memory`](/sdk/gcloud/reference/run/services/update#--memory)\n parameter:\n\n ```bash\n gcloud run services update SERVICE --memory SIZE\n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your service.\n - \u003cvar translate=\"no\"\u003eSIZE\u003c/var\u003e with the desired memory size. The format for size is a fixed or floating point number followed by a unit: `G`, `M`, or `K` corresponding to gigabyte, megabyte, or kilobyte, respectively, or use the power-of-two equivalents: `Gi`, `Mi`, `Ki` corresponding to gibibyte, mebibyte or kibibyte respectively.\n- For new services, set the memory limit by running the\n `gcloud run deploy` command with the\n [`--memory`](/sdk/gcloud/reference/run/deploy#--memory)\n parameter:\n\n ```bash\n gcloud run deploy SERVICE --image=IMAGE_URL --memory SIZE\n ```\n\n Replace:\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your service.\n - \u003cvar translate=\"no\"\u003eIMAGE_URL\u003c/var\u003e with a reference to the container image, for example, `gcr.io/cloudrun/hello`.\n - \u003cvar translate=\"no\"\u003eSIZE\u003c/var\u003e with the desired memory size. The format for size is a fixed or floating point number followed by a unit: `G`, `M`, or `K` corresponding to gigabyte, megabyte, or kilobyte, respectively, or use the power-of-two equivalents: `Gi`, `Mi`, `Ki` corresponding to gibibyte, mebibyte or kibibyte respectively.\n\n### YAML\n\n| **Caution:** Deploying configuration changes using YAML files replaces the configuration of your existing services. Since a YAML file completely overwrites all configurations, you should avoid using multiple methods to modify your services. For example, do not use YAML files in conjunction with the Google Cloud console or `gcloud` commands.\n\nYou can download the configuration of an existing service into a\nYAML file with the `gcloud run services describe` command by using the\n[`--format=export`](/sdk/gcloud/reference/run/services/describe) flag.\nYou can then modify that YAML file and deploy\nthose changes with the `gcloud run services replace` command.\nYou must ensure that you modify only the specified attributes.\n\n1. Download the configuration of your service into a file named\n `service.yaml` on local workspace:\n\n ```bash\n gcloud run services describe SERVICE --format export \u003e service.yaml\n ```\n\n Replace \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e with the name of your\n Knative serving service.\n2. In your local file, update the `memory` attribute:\n\n ```yaml\n apiVersion: serving.knative.dev/v1\n kind: Service\n metadata:\n name: SERVICE_NAME\n spec:\n template:\n spec:\n containers:\n -- image: IMAGE_URL\n resources:\n limits:\n memory: SIZE\n ```\n\n Replace \u003cvar translate=\"no\"\u003eSIZE\u003c/var\u003e with the desired memory size.\n The format is a fixed or floating point number followed by a unit:\n `G`, `M`, or `K` corresponding to gigabyte, megabyte, or kilobyte,\n respectively, or use the power-of-two equivalents: `Gi`, `Mi`, `Ki`\n corresponding to gibibyte, mebibyte or kibibyte respectively.\n3. Replace the service with its new configuration using the following command:\n\n ```bash\n gcloud run services replace service.yaml\n ```"]]