Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Il n'existe pas de documentation Apigee Edge équivalente pour ce sujet.
Symptôme
Les problèmes de tas de mémoire Cassandra peuvent ralentir l'exécution du proxy Apigee hybrid, voire même entraîner des erreurs Datastore
. Parfois, les journaux sont un indicateur précoce, même avant l'apparition des symptômes.
Message d'erreur
Dans les journaux de pod Cassandra (Cloud Logging), des entrées de journal semblables à ce qui suit peuvent être observées :
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
Cause : taille du tas de mémoire Java insuffisante
Diagnostic
Dans le fichier overrides.yaml
de l'installation Apigee hybrid, maxHeapSize
n'est pas défini sur une valeur suffisante.
Cela peut être dû à l'absence d'application des paramètres de production ou à des débits actuels nécessitant un paramètre plus élevé que d'habitude.
Solution
Pour résoudre le problème, ajustez maxHeapSize
et memory
en conséquence, puis appliquez les modifications :
resources: requests: cpu: 7 memory: 15Gi maxHeapSize: 8192M heapNewSize: 1200M
Si le problème persiste avec la configuration de production par défaut, essayez d'augmenter davantage les valeurs. Notez que vous devez vous assurer que la capacité des nœuds, le débit du disque et la bande passante réseau sont également suffisants.
resources: requests: cpu: 7 memory: 30Gi maxHeapSize: 16384M heapNewSize: 2400M
Si le paramètre de tas de mémoire de 16 Go n'est toujours pas suffisant pour le volume de trafic, poursuivez avec le scaling horizontal.
Vous devez collecter des informations de diagnostic
Si le problème persiste, même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez Google Cloud Customer Care :
Outre les données habituelles que vous pouvez être invité à fournir, collectez les données de diagnostic de tous les pods Cassandra à l'aide de la commande ci-dessous :
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
Compressez-les et incluez-les dans la demande d'assistance :
tar -cvzf /tmp/cassandra_data_$(date +%Y.%m.%d_%H.%M.%S).tar.gz /tmp/k_cassandra_nodetool*