Configurar o coletor de lixo para processadores de mensagens

No Edge para nuvem privada 4.54.00 (executado no Java 21), o processador de mensagens usa o coletor de lixo Garbage-First (G1GC, na sigla em inglês) por padrão. Este documento descreve como configurar e verificar as configurações de coleta de lixo no processador de mensagens.

Personalizar o coletor de lixo nos processadores de mensagens

Esta seção descreve o procedimento para configurar configurações alternativas de coleta de lixo (GC, na sigla em inglês) no processador de mensagens do Edge. Você gerencia os parâmetros de GC atualizando as propriedades de GC no processador de mensagens. Para ajustar qualquer propriedade de configuração, use a sintaxe de token definida em Como configurar o Edge.

Para modificar as configurações de GC nos processadores de mensagens, siga estas etapas:

  1. Verificar a propriedade de GC
  2. Modificar o GC nos processadores de mensagens

Verificar a propriedade de GC

As etapas a seguir descrevem como verificar as propriedades de GC configuradas:

  1. Pesquise as propriedades de GC no diretório de origem do processador de mensagens /opt/apigee/edge-message-processor/source usando o seguinte comando:
    grep -riE "useG1GC|useZGC|useStringDeduplication" /opt/apigee/edge-message-processor/source
    
  2. Confirme se a saída desse comando mostra a configuração das propriedades de GC para o processador de mensagens:
    /opt/apigee/edge-message-processor/source/conf/system.properties:useG1GC={T}conf_system_useG1GC{/T}
    /opt/apigee/edge-message-processor/source/conf/system.properties:useZGC={T}conf_system_useZGC{/T}
    /opt/apigee/edge-message-processor/source/conf/system.properties:useStringDeduplication={T}conf_system_useStringDeduplication{/T}

    A string entre as tags {T}{/T} é o nome da propriedade que pode ser definida no arquivo .properties do processador de mensagens.

Modificar o GC nos processadores de mensagens

As etapas a seguir descrevem como modificar as configurações de GC nos processadores de mensagens da Apigee:

  1. Abra o /opt/apigee/customer/application/message-processor.properties arquivo na máquina do processador de mensagens em um editor. Se o arquivo ainda não existir, crie-o. Exemplo:
    vi /opt/apigee/customer/application/message-processor.properties
    
  2. Adicione as linhas de configuração de GC desejadas com base no seu perfil de destino:
    • Opção A: usar o G1GC como o coletor de lixo padrão com algumas modificações:
      conf_system_useG1GC=true
      conf_system_useStringDeduplication=true
      conf_system_g1gc.g1ReservePercent=15
    • Opção B: ativar o ZGC geracional (opcional para implantações de latência ultrabaixa )
      conf_system_useG1GC=false
      conf_system_useZGC=true
      bin_setenv_max_meta_space_size=1024m
    • Opção C: ativar uma configuração de GC genérica :

      Defina bin_setenv_ext_jvm_opts no arquivo de substituição .properties do componente (/opt/apigee/customer/application/message-processor.properties) para configurar as propriedades de GC genéricas e reinicie o componente. Exemplo:

      conf_system_useG1GC=false
      conf_system_useZGC=false
      bin_setenv_ext_jvm_opts="-XX:+UseParallelGC"
  3. Salve as alterações.
  4. Verifique se esse arquivo de propriedades pertence ao usuário apigee. Exemplo:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Reinicie o processador de mensagens usando o seguinte comando:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Se você tiver mais de um processador de mensagens, repita essas etapas em todos os processadores de mensagens.

Atualizar a desduplicação de strings

Por padrão, a configuração do G1GC define UseStringDeduplication como true, o que otimiza a alocação de memória do heap Java, permitindo que valores String idênticos compartilhem uma única matriz de caracteres. Para desativar a eliminação de duplicação de strings, defina conf_system_useStringDeduplication=false em /opt/apigee/customer/application/message-processor.properties e reinicie o processador de mensagens, conforme descrito em Modificar o GC nos processadores de mensagens.

Verificar a configuração de GC nos processadores de mensagens

Para verificar se as mudanças de configuração de GC foram aplicadas no processador de mensagens:

  1. Pesquise a propriedade de GC no /opt/apigee/edge-message-processor/conf diretório e verifique se ela foi definida com o novo valor. Exemplo:
    grep -riE "useG1GC|useZGC|g1gc\.|useStringDeduplication" /opt/apigee/edge-message-processor/conf
    
  2. Verifique se /opt/apigee/edge-message-processor/conf/system.properties reflete os valores recém-configurados. Por exemplo, as configurações Apigee Default GC são exibidas da seguinte maneira:
    /opt/apigee/edge-message-processor/conf/system.properties:useG1GC=true
    /opt/apigee/edge-message-processor/conf/system.properties:useZGC=false
    /opt/apigee/edge-message-processor/conf/system.properties:g1gc.maxGCPauseMillis=200
    /opt/apigee/edge-message-processor/conf/system.properties:g1gc.initiatingHeapOccupancyPercent=45
    /opt/apigee/edge-message-processor/conf/system.properties:g1gc.g1ReservePercent=15
    /opt/apigee/edge-message-processor/conf/system.properties:useStringDeduplication=true
  3. Verifique se o processo da JVM do processador de mensagens em execução foi iniciado com as flags -XX: esperadas:
    ps -ef | grep edge-message-processor | grep -E "UseG1GC|UseZGC"
    
    • Para Apigee Default G1GC, confirme se a linha de comando inclui: -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:G1ReservePercent=15 -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=1024m
    • Para ZGC geracional, confirme se a linha de comando inclui: -XX:+UseZGC -XX:+ZGenerational -XX:MaxMetaspaceSize=1024m
  4. Se ainda não for possível configurar as configurações de GC, entre em contato com o suporte do Apigee Edge.

A seguir