Übersicht
Ab Version 1.14.2 unterstützt Apigee Hybrid große Nachrichtennutzlasten von bis zu 30 MB. Ab Version 1.14.3 können in Apigee Hybrid große Nachrichtennutzlasten von bis zu 75 MB zugelassen werden. Die Standardgröße der Nachrichtennutzlast beträgt 10 MB. Weitere Informationen finden Sie unter Größe der Nachrichtennutzlast.
Unterstützung für Nachrichtennutzlasten bis zu 30 MB konfigurieren
Damit Umgebungen in Ihrer Hybridinstallation große Nachrichtennutzlasten unterstützen, müssen Sie die folgenden Änderungen an Ihrer Laufzeitkonfiguration vornehmen:
- Erhöhen Sie die Heap-Größe auf mindestens 4 Gi.
- Erhöhen Sie die Speicherlimits auf mindestens 6 Gi.
- Erhöhen Sie die Speicheranfragen auf mindestens 4 Gi.
Sie können diese Einstellungen für einzelne oder für alle Umgebungen in Ihrer Installation konfigurieren.
Einzelne Umgebungen für die Unterstützung großer Nachrichtennutzlasten konfigurieren
Wenn die Proxys, die für die Unterstützung großer Nachrichtennutzlasten konfiguriert sind, Endpunkte in nur einer oder wenigen Umgebungen in Ihrer Installation haben, können Sie die Umgebungen für die Unterstützung großer Nutzlasten konfigurieren. So wird verhindert, dass Umgebungen, die keine großen Nutzlasten unterstützen müssen, zusätzlichen Speicherplatz benötigen.
Wenn Sie einzelne Umgebungen für die Unterstützung großer Nutzlasten konfigurieren möchten, können Sie die envs.components.runtime-Attribute verwenden. Nehmen Sie die folgenden Änderungen an Ihrer overrides.yaml-Datei vor:
-
Fügen Sie der Datei
overrides.yamldie folgende Stanza hinzu: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: 6GiWeitere Informationen:
-
Aktualisieren Sie das
apigee-env-Diagramm für jede Umgebung, die Sie aktualisieren:Probelauf:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
- ENV_RELEASE_NAME ist ein Name, der verwendet wird, um die Installation und Upgrades des Diagramms
apigee-envzu verfolgen. Dieser Name muss sich von den anderen Helm-Release-Namen in Ihrer Installation unterscheiden. Normalerweise entspricht diesENV_NAME. Wenn Ihre Umgebung jedoch denselben Namen wie Ihre Umgebungsgruppe hat, müssen Sie unterschiedliche Release-Namen für die Umgebung und die Umgebungsgruppe verwenden, z. B.dev-env-releaseunddev-envgroup-release. Weitere Informationen zu Releases in Helm finden Sie in der Helm-Dokumentation unter Three big concepts. - ENV_NAME ist der Name der Umgebung, die Sie aktualisieren.
- OVERRIDES_FILE ist die bearbeitete Datei
overrides.yaml.
- ENV_RELEASE_NAME ist ein Name, der verwendet wird, um die Installation und Upgrades des Diagramms
-
Aktualisieren Sie das Diagramm:
Probelauf:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Alle Umgebungen für die Unterstützung großer Nachrichtennutzlasten konfigurieren
Durch Änderungen an Ihrem runtime-Abschnitt werden die Heap- und Arbeitsspeicherlimits für alle Umgebungen in Ihrer Installation festgelegt. Sie können diese Einstellungen für einzelne Umgebungen mit den envs.components.runtime-Properties überschreiben.
-
Fügen Sie der Datei
overrides.yamldie folgende Stanza hinzu:runtime: cwcAppend: bin_setenv_max_mem: 4096Mi # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6GiWeitere Informationen:
-
Aktualisieren Sie das
apigee-env-Diagramm für jede Umgebung in Ihrer Installation:Probelauf:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
Aktualisieren Sie das Diagramm:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Richtlinien für Nachrichtennutzlasten zwischen 30 MB und 75 MB
Die Bestimmung der optimalen Heap-Größe für einen Message Processor für Szenarien mit großen Nutzlasten hängt von Ihrem spezifischen Anwendungsfall ab. Apigee bietet jedoch allgemeine Richtlinien, die Ihnen dabei helfen können.
Verwenden Sie die folgenden Werte, um die Heap-Größe pro Message Processor (MP) zu berechnen:
Q– Maximale Abfragen pro Sekunde pro MP-PodL: Round-Trip-Latenz pro Anfrage (95. Perzentil der erwarteten Latenz)C: Gesamte Nebenläufigkeit pro MP, die maximale Anzahl von Anfragen, die zu einem bestimmten Zeitpunkt gleichzeitig im MP vorhanden sein können. Die Berechnung sieht so aus:C = Q * L.P_req: Größe der Nutzlast (in MB) der Anfrage, die vom Client an Apigee gesendet wurdeP_resp: Größe der Nutzlast (in MB) der vom Ziel empfangenen AntwortS– Sicherheitsfaktor (Apigee empfiehlt einen Bereich von 1,5 bis 2)BASE_HEAP: Basis-Heap-Größe für Ressourcen, die nicht mit Anfragen zusammenhängen, z. B. Proxykonfigurationen. (Apigee empfiehlt3072Mi)
Unter Berücksichtigung des Sicherheitsfaktors S und einer Basis-Heap-Größe wird der gesamte Heap pro MP so berechnet:
Heap-Größe pro MP = BASE_HEAP + C * (P_req + P_resp) * S
Die Konfiguration für die Basisüberschreibungen für das Szenario mit großer Nutzlast lautet:
envs:
components:
runtime:
resources:
requests:
cpu: 2000m
memory: 2Gi
limits:
cpu: 4000m
memory: 4Gi
cwcAppend:
bin_setenv_max_mem: 3072Mi # base heap size
Beispielrechnung
Hier ist ein Beispiel für die Berechnung mit den folgenden Werten:
- Maximale Abfragen pro Sekunde,
Q: 2 - Latenz,
L: 7 Sekunden - Größe der Anfragenutzlast,
P_req: 40 MB - Größe der Antwortnutzlast,
P_resp: 40 MB - Sicherheitsfaktor,
S: 1,5 - Basis-Heap-Größe,
BASE_HEAP: 3072 Mi
Heap-Größe = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi
limits.memory sollte 1 GiB über dem empfohlenen Heap liegen, um den Betriebssystemaufwand und die Nutzung von Nicht-Heap-Speicher zu berücksichtigen.
In diesem Beispiel fügen Sie Ihrer overrides.yaml Folgendes hinzu:
envs:
components:
runtime:
resources:
requests:
memory: 4Gi
limits:
memory: 5.75Gi # approximately 1Gi over 4.75Gi
cwcAppend:
bin_setenv_max_mem: 4752Mi
Hinweise
Traffic-Spitzen
HPA sorgt dafür, dass MPs mit steigender QPS skaliert werden. Es kann jedoch etwa 60 Sekunden dauern, bis die HPA das Hochskalieren auslöst. Ein unangemessen hoher Traffic-Burst kann zu OOM-Fehlern (Out of Memory) auf Ihrem MP führen.
Wenn Sie solche Traffic-Bursts erwarten, sollten Sie die Heap-Nutzung mit einem angemessenen Sicherheitsfaktor erhöhen. Beispiel: S = 2.
Heap = BASE_HEAP + (Q * L) * (P_req + P_resp) * 2
Richtliniennutzung
Die oben genannte Berechnung berücksichtigt keine Richtliniennutzung. Mit Apigee können Kunden Kopien ihrer Anfrage-/Antwortnutzlasten erstellen. Dies kann die Heap-Nutzung erheblich verändern.
Wenn Sie beispielsweise eine JavaScript-Richtlinie haben, mit der drei Kopien der gesamten Zielantwort erstellt werden, lautet die Gleichung:
Heap per MP = Base Heap + (Q * L) * (P_req + P_resp * 4) * S
Beispielrichtlinien, die den Arbeitsspeicherverbrauch potenziell erhöhen können:
- AssignMessage
- JavaScript Callout
- JavaCallout
Monitoring
Die hier bereitgestellten Richtlinien sollen als Ausgangspunkt dienen. Es wird dringend empfohlen, die Speichernutzung zu überwachen und Benachrichtigungen einzurichten. Verwenden Sie einen höheren Sicherheitsfaktor, wenn die Heap-Nutzung durchgehend hoch ist.
Weitere Informationen
- Größe der Nachrichtennutzlast
envs[].components.runtime.resources.limits.memoryenvs[].components.runtime.resources.requests.memoryruntime.resources.limits.memoryruntime.resources.requests.memory