Problemi di spazio nell'heap Java di Cassandra

Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Non esiste una equivalente Documentazione di Apigee Edge per questo argomento.

Sintomo

I problemi di heap di Cassandra potrebbero causare rallentamenti nel proxy ibrido Apigee o addirittura Datastore errori. A volte i log sono un'analisi l'indicatore, anche prima dell'insorgenza dei sintomi.

Messaggio di errore

Nei log dei pod Cassandra (Cloud Logging), voci di log che sono simili ai seguenti:

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: dimensioni heap Java insufficienti

Diagnosi

Nel file overrides.yaml per Apigee hybrid dell'installazione, il valore maxHeapSize non è impostato su un valore sufficiente. Ciò potrebbe essere dovuto a impostazioni di produzione non applicate o le velocità effettiva attuali che richiedono un valore più alto del solito.

Risoluzione

Per risolvere il problema, modifica maxHeapSize e memory di conseguenza e applica le modifiche:

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

Se il problema persiste con la configurazione di produzione predefinita, prova a aumenta ulteriormente i valori. Tieni presente che devi assicurarti che la capacità del nodo, velocità effettiva del disco di rete sono sufficienti.

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

Se l'impostazione di heap da 16 GB non è ancora sufficiente per il volume di traffico, continua con scalabilità orizzontale.

Raccogliere dati diagnostici

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i dati le informazioni diagnostiche e contatta il Assistenza clienti Google Cloud:

Oltre ai soliti dati che potresti dover fornire, raccogli i dati dati diagnostici di tutti i pod Cassandra con il comando seguente:

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

Comprimilo e forniscilo nella richiesta di assistenza:

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