Masalah ruang heap Java Cassandra

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Tidak ada padanan Dokumentasi Apigee Edge untuk topik ini.

Gejala

Masalah heap Cassandra dapat menyebabkan kelambatan pada proxy hybrid Apigee atau bahkan error Datastore. Terkadang log merupakan titik awal indikator, bahkan sebelum timbulnya gejala.

Pesan Error

Di log pod Cassandra (Cloud Logging), entri log mungkin diamati yang mirip dengan berikut ini:

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

Penyebab: Ukuran heap Java tidak memadai

Diagnosis

Dalam file overrides.yaml untuk Apigee Hybrid penginstalan, maxHeapSize tidak ditetapkan ke nilai yang memadai. Hal ini dapat disebabkan oleh setelan produksi tidak diterapkan, atau throughput saat ini yang memerlukan lebih tinggi dari biasanya.

Resolusi

Untuk mengatasi masalah ini, sesuaikan maxHeapSize dan memory sebagaimana mestinya, dan terapkan perubahan:

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

Jika masalah terus berlanjut dengan konfigurasi produksi default, coba meningkatkan nilainya lebih lanjut. Perhatikan bahwa Anda perlu memastikan bahwa kapasitas node, throughput disk dan bandwidth jaringan juga sudah memadai.

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

Jika setelan heap 16 GB masih tidak memadai untuk volume traffic, lanjutkan dengan penskalaan horizontal.

Harus mengumpulkan informasi diagnostik

Jika masalah berlanjut bahkan setelah mengikuti instruksi di atas, kumpulkan berikut informasi diagnostik dan kemudian menghubungi Google Cloud Customer Care:

Terlepas dari data biasa yang mungkin diminta untuk Anda berikan, kumpulkan data diagnostik dari semua pod Cassandra dengan perintah di bawah ini:

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

Kompresi, dan sediakan dalam kasus Dukungan:

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