Descripción general
A partir de la versión 1.14.2, Apigee Hybrid admite cargas útiles de mensajes grandes de hasta 30 MB. A partir de la versión 1.14.3, Apigee Hybrid puede permitir cargas útiles de mensajes grandes de hasta 75 MB. El tamaño predeterminado de la carga útil del mensaje es de 10 MB. Consulta Tamaño de la carga útil del mensaje.
Configura la compatibilidad con cargas útiles de mensajes de hasta 30 MB
Para habilitar los entornos en tu instalación híbrida para que admitan cargas útiles de mensajes grandes, debes realizar los siguientes cambios en la configuración del entorno de ejecución:
- Aumenta el tamaño del montón a, al menos, 4 Gi.
- Aumenta los límites de memoria a, al menos, 6 Gi.
- Aumenta las solicitudes de recursos de memoria a, al menos, 4 Gi.
Puedes configurar estos parámetros para entornos individuales o para todos los entornos de tu instalación.
Configura entornos individuales para admitir cargas útiles de mensajes grandes
Si los proxies configurados para admitir cargas útiles de mensajes grandes tienen extremos en solo uno o algunos entornos de tu instalación, puedes configurar los entornos para que admitan cargas útiles grandes. Esto evita agregar memoria adicional a los entornos que no necesitarán admitir cargas útiles grandes.
Para configurar entornos individuales para admitir cargas útiles de mensajes grandes, puedes usar las propiedades envs.components.runtime. Realiza los siguientes cambios en tu archivo overrides.yaml:
-
Agrega la siguiente estrofa a tu archivo
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: 6GiConsulta los siguientes vínculos:
-
Actualiza el gráfico
apigee-envpara cada entorno que actualices:Prueba de validación:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
- ENV_RELEASE_NAME es un nombre que se usa para hacer un seguimiento de la instalación y las actualizaciones del gráfico
apigee-env. Este nombre debe ser único y diferente de los demás nombres de versiones de Helm en tu instalación. Por lo general, es igual aENV_NAME. Sin embargo, si tu entorno tiene el mismo nombre que tu grupo de entornos, debes usar nombres de versión diferentes para el entorno y el grupo de entornos, por ejemplo,dev-env-releaseydev-envgroup-release. Para obtener más información sobre las versiones en Helm, consulta Tres conceptos importantes en la documentación de Helm. - ENV_NAME es el nombre del entorno que estás actualizando.
- OVERRIDES_FILE es tu archivo
overrides.yamleditado.
- ENV_RELEASE_NAME es un nombre que se usa para hacer un seguimiento de la instalación y las actualizaciones del gráfico
-
Actualiza el chart:
Prueba de validación:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Configura todos los entornos para admitir cargas útiles de mensajes grandes
Los cambios en tu sección runtime establecerán los límites de memoria y montón para todos los entornos de tu instalación. Puedes anular esta configuración para entornos individuales con las propiedades envs.components.runtime.
-
Agrega la siguiente estrofa a tu archivo
overrides.yaml:runtime: cwcAppend: bin_setenv_max_mem: 4096Mi # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6GiConsulta los siguientes vínculos:
-
Actualiza el gráfico
apigee-envpara cada entorno de tu instalación:Prueba de validación:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
Actualiza el chart:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Lineamientos para cargas útiles de mensajes de entre 30 MB y 75 MB
Determinar el tamaño de montón óptimo para un Message Processor en situaciones de cargas útiles grandes depende de tu caso de uso específico. Sin embargo, Apigee ofrece lineamientos generales para ayudarte en este proceso.
Para calcular el tamaño del montón por Message Processor (MP), usa los siguientes valores:
Q: QPS máx. por Pod de MPL: Latencia de ida y vuelta por solicitud (percentil 95 de la latencia esperada)C: Es la simultaneidad total por MP, la cantidad máxima de solicitudes que pueden persistir de forma simultánea en el MP en cualquier momento. Esto se calcula comoC = Q * L.P_req: Tamaño de la carga útil (en MB) de la solicitud que envió el cliente a ApigeeP_resp: Tamaño de la carga útil (en MB) de la respuesta recibida del destinoS: Factor de seguridad (Apigee recomienda un rango de 1.5 a 2)BASE_HEAP: Tamaño base del heap para tener en cuenta los recursos no relacionados con la solicitud, como las configuraciones de proxy. (Apigee recomienda3072Mi).
Si se tiene en cuenta el factor de seguridad S, junto con un tamaño de montón base, el montón total por MP se calcula de la siguiente manera:
Tamaño del heap por MP = BASE_HEAP + C * (P_req + P_resp) * S
La configuración de anulaciones básicas para la situación de carga útil grande es la siguiente:
envs:
components:
runtime:
resources:
requests:
cpu: 2000m
memory: 2Gi
limits:
cpu: 4000m
memory: 4Gi
cwcAppend:
bin_setenv_max_mem: 3072Mi # base heap size
Ejemplo de cálculo
A continuación, se muestra un ejemplo de cálculo con los siguientes valores:
- QPS máx.,
Q: 2 - Latencia,
L: 7 s - Tamaño de la carga útil de la solicitud,
P_req: 40 MB - Tamaño de la carga útil de la respuesta,
P_resp: 40 MB - Factor de seguridad,
S: 1.5 - Tamaño de montón base,
BASE_HEAP: 3072 Mi
Tamaño del heap = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi
Se espera que limits.memory sea 1 Gi superior al heap recomendado para tener en cuenta la sobrecarga del SO y otros usos de memoria que no son de heap.
En este ejemplo, agregarías lo siguiente a tu overrides.yaml:
envs:
components:
runtime:
resources:
requests:
memory: 4Gi
limits:
memory: 5.75Gi # approximately 1Gi over 4.75Gi
cwcAppend:
bin_setenv_max_mem: 4752Mi
Consideraciones
Ráfagas de tráfico
El HPA garantiza que los MPs se ajusten a medida que aumentan las QPS. Sin embargo, puedes esperar que el HPA tarde alrededor de 60 segundos en activar el aumento de la escala. Un aumento repentino e irrazonablemente alto del tráfico puede generar errores de memoria insuficiente (OOM) en tu MP.
Si prevés estos aumentos de actividad de tráfico, aumenta el uso del heap con un factor de seguridad que parezca adecuado. Por ejemplo, S = 2.
Heap = BASE_HEAP + (Q * L) * (P_req + P_resp) * 2
Uso de la política
El cálculo anterior no incluye el uso de la política. Apigee permite a los clientes hacer copias de sus cargas útiles de solicitud y respuesta, lo que puede alterar significativamente el uso de la memoria dinámica.
Por ejemplo, si tienes una política de JavaScript que crea 3 copias de toda tu respuesta de destino, la ecuación que debes usar sería la siguiente:
Heap per MP = Base Heap + (Q * L) * (P_req + P_resp * 4) * S
Estas son algunas políticas de ejemplo que podrían aumentar el uso de memoria:
- AssignMessage
- Texto destacado de JavaScript
- JavaCallout
Supervisión
Los lineamientos que se proporcionan aquí tienen como objetivo servir como punto de partida. Se recomienda supervisar el uso de memoria y configurar alertas. Usa un factor de seguridad mayor si el uso del montón es constantemente alto.
Consulta lo siguiente:
- Tamaño de la carga útil del mensaje
envs[].components.runtime.resources.limits.memoryenvs[].components.runtime.resources.requests.memoryruntime.resources.limits.memoryruntime.resources.requests.memory