Panoramica
Apigee Hybrid supporta payload di messaggi di grandi dimensioni fino a 30 MB con un massimo teorico di 75 MB. La dimensione predefinita del payload del messaggio è 10 MB. Vedi Dimensioni del payload del messaggio.
Configurare il supporto per i payload dei messaggi fino a 30 MB
Per consentire agli ambienti nell'installazione ibrida di supportare payload di messaggi di grandi dimensioni, devi apportare le seguenti modifiche alla configurazione di runtime:
- Aumenta la dimensione dell'heap ad almeno 4 Gi.
- Aumenta i limiti di memoria ad almeno 6 Gi.
- Aumenta le richieste di risorse di memoria ad almeno 4 Gi.
Puoi configurare queste impostazioni per singoli ambienti o per tutti gli ambienti dell'installazione.
Configura singoli ambienti per supportare payload di messaggi di grandi dimensioni
Se i proxy configurati per supportare payload di messaggi di grandi dimensioni hanno endpoint in uno o pochi ambienti dell'installazione, puoi configurare gli ambienti in modo che supportino payload di grandi dimensioni. In questo modo, si evita di aggiungere memoria aggiuntiva agli ambienti che non dovranno supportare payload di grandi dimensioni.
Per configurare i singoli ambienti in modo che supportino payload di messaggi di grandi dimensioni, puoi utilizzare le proprietà envs[].components.runtime. Apporta le seguenti modifiche al file overrides.yaml:
-
Aggiungi la seguente strofa al file
overrides.yaml:envs: - name: ENV_NAME components: runtime: cwcAppend: bin_setenv_max_mem: 4096m # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6GiVedi:
-
Aggiorna il grafico
apigee-envper ogni ambiente che stai aggiornando:Dry run:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
- ENV_RELEASE_NAME è un nome utilizzato per tenere traccia dell'installazione e degli upgrade del grafico
apigee-env. Questo nome deve essere univoco rispetto agli altri nomi delle release Helm nell'installazione. Di solito è uguale aENV_NAME. Tuttavia, se l'ambiente ha lo stesso nome del gruppo di ambienti, devi utilizzare nomi di release diversi per l'ambiente e il gruppo di ambienti, ad esempiodev-env-releaseedev-envgroup-release. Per saperne di più sulle release in Helm, consulta Tre concetti importanti nella documentazione di Helm. - ENV_NAME è il nome dell'ambiente di cui stai eseguendo l'upgrade.
- OVERRIDES_FILE è il file
overrides.yamlmodificato.
- ENV_RELEASE_NAME è un nome utilizzato per tenere traccia dell'installazione e degli upgrade del grafico
-
Esegui l'upgrade del grafico:
Dry run:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Configura tutti gli ambienti in modo che supportino payload di messaggi di grandi dimensioni
Le modifiche alla sezione runtime impostano i limiti di heap e memoria per tutti gli ambienti dell'installazione. Puoi eseguire l'override di queste impostazioni per singoli ambienti con le proprietà envs[].components.runtime.
-
Aggiungi la seguente strofa al file
overrides.yaml:runtime: cwcAppend: bin_setenv_max_mem: 4096m # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6GiVedi:
-
Aggiorna il grafico
apigee-envper ogni ambiente dell'installazione:Dry run:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
Esegui l'upgrade del grafico:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Linee guida per i payload dei messaggi tra 30 MB e 75 MB
La determinazione della dimensione dell'heap ottimale per un processore di messaggi per scenari con payload di grandi dimensioni dipende dal tuo caso d'uso specifico. Tuttavia, Apigee offre linee guida generali per aiutarti in questo processo.
Per calcolare le dimensioni dell'heap per processore di messaggi (MP), utilizza i seguenti valori:
Q- QPS max per pod MPL- Latenza round trip per richiesta (95° percentile della latenza prevista)C- Concorrenza totale per MP, il numero massimo di richieste che possono essere memorizzate simultaneamente nell'MP in un determinato momento. Questo valore viene calcolato comeC = Q * L.P_req- Dimensione del payload (in MB) della richiesta inviata dal client ad ApigeeP_resp: dimensioni del payload (in MB) della risposta ricevuta dal targetS- Fattore di sicurezza (Apigee consiglia un intervallo compreso tra 1,5 e 2)BASE_HEAP: dimensione heap di base per tenere conto delle risorse non correlate alle richieste, come le configurazioni proxy. (Apigee consiglia3072Mi)
Tenendo conto del fattore di sicurezza S, oltre a una dimensione dell'heap di base, l'heap totale per
MP viene calcolato come segue:
Dimensioni heap per MP = BASE_HEAP + C * (P_req + P_resp) * S
La configurazione delle sostituzioni di base per lo scenario di payload di grandi dimensioni è:
envs:
components:
runtime:
resources:
requests:
cpu: 2000m
memory: 2Gi
limits:
cpu: 4000m
memory: 4Gi
cwcAppend:
bin_setenv_max_mem: 3072m # base heap size
Calcolo di esempio
Di seguito è riportato un esempio di calcolo con i seguenti valori:
- QPS max,
Q: 2 - Latenza,
L: 7 secondi - Dimensioni payload richiesta,
P_req: 40 MB - Dimensioni payload della risposta,
P_resp: 40 MB - Fattore di sicurezza,
S: 1,5 - Dimensioni heap di base,
BASE_HEAP: 3072 Mi
Dimensioni heap = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi
limits.memory dovrebbe superare di 1 GB l'heap consigliato.
In questo esempio, devi aggiungere quanto segue a overrides.yaml:
envs:
components:
runtime:
resources:
requests:
memory: 4Gi
limits:
memory: 5.75Gi # approximately 1Gi over 4.75Gi
cwcAppend:
bin_setenv_max_mem: 4752m
Considerazioni
Picchi di traffico
HPA garantisce che i MP vengano scalati man mano che le QPS aumentano. Tuttavia, puoi aspettarti che HPA impieghi circa 60 secondi per attivare lo scale up. Un picco di traffico irragionevolmente elevato può causare errori out of memory (OOM) sul tuo MP.
Se prevedi questi picchi di traffico, fai lo scale up dell'utilizzo dell'heap utilizzando un fattore di sicurezza che
ti sembra appropriato. Ad esempio, S = 2.
Heap = BASE_HEAP + (Q * L) * (P_req + P_resp) * 2
Utilizzo delle policy
Il calcolo precedente non include l'utilizzo di Policy. Apigee consente ai clienti di creare copie dei payload di richiesta / risposta e questo può alterare in modo significativo l'utilizzo dell'heap.
Ad esempio, se hai una policy JavaScript che crea 3 copie dell'intera risposta di destinazione, l'equazione da utilizzare è:
Heap per MP = Base Heap + (Q * L) * (P_req + P_resp * 4) * S
Esempi di policy che potrebbero potenzialmente aumentare la memoria utilizzata sono:
- AssignMessage
- Callout JavaScript
- JavaCallout
Monitoraggio
Le linee guida fornite qui hanno lo scopo di fungere da punto di partenza. Il monitoraggio e gli avvisi relativi alla memoria utilizzata sono vivamente consigliati. Utilizza un fattore di sicurezza maggiore se l'utilizzo dell'heap è costantemente elevato.
Vedi anche:
- Dimensioni payload messaggio
envs[].components.runtime.resources.limits.memoryenvs[].components.runtime.resources.requests.memoryruntime.resources.limits.memoryruntime.resources.requests.memory