Problemas de espaço de heap do Java no Cassandra

Esta é a documentação da Apigee e da Apigee híbrida.
Não há documentação equivalente do Apigee Edge para esse tópico.

Sintoma

Problemas do heap do Cassandra podem causar lentidão na execução de proxy da Apigee híbrida ou até mesmo erros de Datastore. Às vezes, os registros são um indicador, mesmo antes do início dos sintomas.

Mensagem de erro

Nos registros do pod do Cassandra (Cloud Logging), entradas de registro podem ser observadas como as seguintes:

WARN  [Service Thread] 2023-01-01 01:14:51,121 GCInspector.java:283 - G1 Young Generation GC in 2510ms...
...
WARN  [Service Thread] 2023-01-01 01:14:51,121 GCInspector.java:283 - G1 Old Generation GC in 3100ms...
2023-01-01 01:14:51,123 FailureDetector.java:278 - Not marking nodes down due to local pause of 45261214670 > 5000000000
java.lang.OutOfMemoryError: Java heap space

Causa: tamanho insuficiente de heap do Java

Diagnóstico

No arquivo overrides.yaml da interface da instalação da Apigee híbrida, maxHeapSize não está definido com um valor suficiente. Isso pode ocorrer devido a configurações de produção não aplicadas ou as capacidades de processamento atuais que exigem uma configuração maior do que o normal.

Resolução

Para resolver o problema, ajuste maxHeapSize e memory de acordo com , e aplicará as alterações:

  resources:
    requests:
      cpu: 7
      memory: 15Gi
  maxHeapSize: 8192M
  heapNewSize: 1200M

Se o problema persistir com a configuração de produção padrão, tente aumentar ainda mais os valores. É necessário garantir que a capacidade do nó, a capacidade de processamento do disco e a largura de banda da rede também sejam suficientes.

  resources:
    requests:
      cpu: 7
      memory: 30Gi
  maxHeapSize: 16384M
  heapNewSize: 2400M

Se a configuração de heap de 16 GB ainda não for suficiente para o volume de tráfego, continue com escalonamento horizontal.

É necessário coletar informações de diagnóstico

Se o problema persistir mesmo depois de seguir as instruções acima, colete as seguintes informações de diagnóstico e entre em contato com o Cloud Customer Care:

Além dos dados usuais que podem ser solicitados, colete os dados de diagnóstico de todos os pods do Cassandra com o comando abaixo:

for p in $(kubectl -n apigee get pods -l app=apigee-cassandra --no-headers -o custom-columns=":metadata.name") ; do \
for com in info describecluster failuredetector version status ring info gossipinfo compactionstats tpstats netstats cfstats proxyhistograms gcstats ; do kubectl \
-n apigee exec ${p} -- bash -c 'nodetool -u $APIGEE_JMX_USER -pw $APIGEE_JMX_PASSWORD '"$com"' 2>&1 '\
| tee /tmp/k_cassandra_nodetool_${com}_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | head -n 40 ; echo '...' ; done; done

Compacte-o e informe-o no caso de suporte:

tar -cvzf /tmp/cassandra_data_$(date +%Y.%m.%d_%H.%M.%S).tar.gz /tmp/k_cassandra_nodetool*