Problemas de espacio de montón de Java de Cassandra

Estás viendo la documentación de Apigee y Apigee Hybrid.
No hay documentación de Apigee Edge equivalente para este tema.

Síntoma

Los problemas de montón de Cassandra pueden causar lentitud en la ejecución del proxy de Apigee Hybrid o incluso errores Datastore. A veces, los registros son un indicador anticipado, incluso antes de la aparición de los síntomas.

Mensaje de error

En los registros del Pod de Cassandra (Cloud Logging), es posible que se observen entradas de registro similares a las siguientes:

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: Tamaño del montón de Java insuficiente

Diagnóstico

En el archivo overrides.yaml para la instalación de Apigee Hybrid, maxHeapSize no está configurado en un valor suficiente. Esto podría deberse a que no se aplicó la configuración de producción o a que las capacidades de procesamiento actuales requieren una configuración más alta de lo habitual.

Solución

Para resolver el problema, ajusta maxHeapSize y memory según corresponda y aplica los cambios:

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

Si el problema persiste con la configuración de producción predeterminada, intenta aumentar aún más los valores. Ten en cuenta que debes asegurarte de que la capacidad del nodo, la capacidad de procesamiento del disco y el ancho de banda de red también sean suficientes.

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

Si la configuración del montón de 16 GB aún no es suficiente para el volumen de tráfico, continúa con el escalamiento horizontal.

Se debe recopilar información de diagnóstico

Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con Atención al cliente de Google Cloud:

Además de los datos habituales que se te puede solicitar que proporciones, recopila los datos de diagnóstico de todos los Pods de Cassandra con el siguiente comando:

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

Comprimirla y proporcionarla en el caso de ayuda:

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