Visão geral
A Apigee híbrida oferece suporte a payloads de mensagens grandes de até 30 MB. A partir da versão híbrida 1.15.1, é possível usar payloads de mensagens grandes de até 75 MB. O tamanho padrão do payload da mensagem é de 10 MB. Consulte Tamanho do payload da mensagem.
Configurar o suporte para payloads de mensagens de até 30 MB
Para ativar ambientes na sua instalação híbrida e oferecer suporte a payloads de mensagens grandes, faça as seguintes mudanças na configuração do ambiente de execução:
- Aumente o tamanho do heap para pelo menos 4Gi.
- Aumente os limites de memória para pelo menos 6 Gi.
- Aumente as solicitações de recursos de memória para pelo menos 4 Gi.
É possível configurar essas opções para ambientes individuais ou para todos os ambientes na sua instalação.
Configurar ambientes individuais para oferecer suporte a payloads de mensagens grandes
Se os proxies configurados para oferecer suporte a grandes payloads de mensagens tiverem endpoints em apenas um ou alguns ambientes na sua instalação, configure os ambientes para oferecer suporte a grandes payloads. Isso evita adicionar mais memória a ambientes que não precisam oferecer suporte a payloads grandes.
Para configurar ambientes individuais para oferecer suporte a payloads de mensagens grandes, use as propriedades envs.components.runtime. Faça as seguintes mudanças no arquivo overrides.yaml:
-
Adicione a seguinte estrofe ao arquivo
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: 6GiVeja estes tópicos:
-
Faça upgrade do gráfico
apigee-envpara cada ambiente que você está atualizando:Simulação:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
- ENV_RELEASE_NAME é um nome usado para acompanhar a instalação e os upgrades do gráfico
apigee-env. Ele precisa ser diferente dos outros nomes de versão do Helm na sua instalação. Normalmente, é o mesmo queENV_NAME. No entanto, se o ambiente tiver o mesmo nome do grupo de ambientes, use nomes de lançamento diferentes para o ambiente e o grupo de ambientes, por exemplo,dev-env-releaseedev-envgroup-release. Para mais informações sobre lançamentos no Helm, consulte Três grandes conceitos na documentação do Helm. - ENV_NAME é o nome do ambiente que você está fazendo upgrade.
- OVERRIDES_FILE é o arquivo
overrides.yamleditado.
- ENV_RELEASE_NAME é um nome usado para acompanhar a instalação e os upgrades do gráfico
-
Faça upgrade do gráfico:
Simulação:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Configurar todos os ambientes para oferecer suporte a payloads de mensagens grandes
As mudanças na seção runtime definem os limites de heap e memória para todos os ambientes na instalação. É possível substituir essas configurações em ambientes individuais com as propriedades envs.components.runtime.
-
Adicione a seguinte estrofe ao arquivo
overrides.yaml:runtime: cwcAppend: bin_setenv_max_mem: 4096Mi # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6GiVeja estes tópicos:
-
Faça upgrade do gráfico
apigee-envpara cada ambiente na instalação:Simulação:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
Faça upgrade do gráfico:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
Diretrizes para payloads de mensagens entre 30 MB e 75 MB
Determinar o tamanho ideal do heap para um processador de mensagens em cenários de payload grande depende do seu caso de uso específico. No entanto, a Apigee oferece diretrizes gerais para ajudar nesse processo.
Para calcular o tamanho do heap por processador de mensagens (MP, na sigla em inglês), use os seguintes valores:
Q: QPS máximo por pod de MPL: latência de ida e volta por solicitação (95º percentil da latência esperada)C: simultaneidade total por MP, o número máximo de solicitações que podem persistir simultaneamente no MP a qualquer momento. Isso é calculado comoC = Q * L.P_req: tamanho do payload (em MB) da solicitação enviada pelo cliente à ApigeeP_resp: tamanho do payload (em MB) da resposta recebida do destino.S: fator de segurança (a Apigee recomenda um intervalo de 1,5 a 2)BASE_HEAP: tamanho do heap de base para considerar recursos não relacionados à solicitação, como configurações de proxy. (A Apigee recomenda3072Mi)
Considerando o fator de segurança S e um tamanho de heap básico, o heap total por MP é calculado da seguinte forma:
Tamanho do heap por MP = BASE_HEAP + C * (P_req + P_resp) * S
A configuração de substituições de base para o cenário de payload grande é:
envs:
components:
runtime:
resources:
requests:
cpu: 2000m
memory: 2Gi
limits:
cpu: 4000m
memory: 4Gi
cwcAppend:
bin_setenv_max_mem: 3072Mi # base heap size
Exemplo de cálculo
Confira um exemplo de cálculo com os seguintes valores:
- QPS máximo,
Q: 2 - Latência,
L: 7s - Tamanho do payload da solicitação,
P_req: 40 MB - Tamanho do payload de resposta,
P_resp: 40 MB - Fator de segurança,
S: 1,5 - Tamanho do heap de base,
BASE_HEAP: 3072Mi
Tamanho do heap = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi
Espera-se que limits.memory seja 1 GiB maior que o heap recomendado.
Neste exemplo, você adicionaria o seguinte ao seu overrides.yaml:
envs:
components:
runtime:
resources:
requests:
memory: 4Gi
limits:
memory: 5.75Gi # approximately 1Gi over 4.75Gi
cwcAppend:
bin_setenv_max_mem: 4752Mi
Considerações
Picos de tráfego
O HPA garante que os MPs sejam escalonados à medida que o QPS aumenta. No entanto, o HPA leva cerca de 60 segundos para acionar o escalonamento vertical. Um pico de tráfego muito alto pode causar erros de falta de memória (OOM) no seu MP.
Se você prevê esses bursts de tráfego, escalonar verticalmente o uso do heap usando um fator de segurança que pareça adequado. Por exemplo, S = 2
Heap = BASE_HEAP + (Q * L) * (P_req + P_resp) * 2
Uso de políticas
O cálculo acima não inclui o uso da política. A Apigee permite que os clientes façam cópias dos payloads de solicitação / resposta, o que pode alterar significativamente o uso do heap.
Por exemplo, se você tiver uma política de JavaScript que faz três cópias de toda a resposta de destino, a equação a ser usada será:
Heap per MP = Base Heap + (Q * L) * (P_req + P_resp * 4) * S
Exemplos de políticas que podem aumentar o uso da memória:
- AssignMessage
- JavaScript Callout
- JavaCallout
Monitoramento
As diretrizes fornecidas aqui servem como ponto de partida. Recomendamos monitorar e alertar sobre o uso de memória. Use um fator de segurança maior se o uso do heap for consistentemente alto.
Consulte também:
- Tamanho do payload da mensagem
envs[].components.runtime.resources.limits.memoryenvs[].components.runtime.resources.requests.memoryruntime.resources.limits.memoryruntime.resources.requests.memory