Panoramica
Apigee hybrid supporta payload di messaggi di grandi dimensioni fino a 30 MB. A partire dalla versione 1.15.1, hybrid può consentire payload di messaggi di grandi dimensioni fino a 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.
Configurare 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 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: 4096Mi # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6GiVedi:
-
Aggiorna il grafico
apigee-envper ogni ambiente che stai aggiornando:Prova:
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 il tuo ambiente ha lo stesso nome del tuo 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 che 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:
Prova:
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 imposteranno 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: 4096Mi # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6GiVedi:
-
Esegui l'upgrade del grafico
apigee-envper ogni ambiente dell'installazione:Prova:
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 ottimale dell'heap 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 ogni processore di messaggi (MP), utilizza i seguenti valori:
Q- QPS max per pod MPL- Latenza di andata e ritorno per richiesta (95° percentile della latenza prevista)C: concorrenza totale per MP, il numero massimo di richieste che possono essere persistenti contemporaneamente 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 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, insieme 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 degli override di base per lo scenario Large Payload è:
envs:
components:
runtime:
resources:
requests:
cpu: 2000m
memory: 2Gi
limits:
cpu: 4000m
memory: 4Gi
cwcAppend:
bin_setenv_max_mem: 3072Mi # base heap size
Calcolo di esempio
Di seguito è riportato un esempio di calcolo con i seguenti valori:
- QPS max,
Q: 2 - Latenza,
L: 7 s - Dimensioni payload richiesta,
P_req: 40 MB - Dimensioni payload risposta,
P_resp: 40 MB - Fattore di sicurezza,
S: 1,5 - Dimensioni heap di base,
BASE_HEAP: 3072 Mi
Heap size = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi
Si prevede che limits.memory superi 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: 4752Mi
Considerazioni
Picchi di traffico
HPA garantisce che i MP vengano scalati all'aumentare delle QPS. Tuttavia, puoi aspettarti che HPA impieghi circa 60 secondi per attivare lo scale up. Un picco di traffico irragionevolmente elevato può causare errori di memoria insufficiente (OOM) sul tuo MP.
Se prevedi questi picchi di traffico, aumenta l'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 riportato sopra 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 l'utilizzo della memoria:
- AssignMessage
- Callout JavaScript
- JavaCallout
Monitoraggio
Le linee guida fornite qui hanno lo scopo di fungere da punto di partenza. È consigliabile monitorare e inviare avvisi sull'utilizzo della memoria. 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