Cassandra Java 堆積空間問題

您目前查看的是 ApigeeApigee Hybrid 說明文件。
這個主題沒有對應的 Apigee Edge 說明文件。

問題

Cassandra 堆積問題可能會導致 Apigee Hybrid 代理程式執行速度緩慢,甚至發生 Datastore 錯誤。有時記錄會成為早期指標,甚至在出現症狀前就顯示。

錯誤訊息

在 Cassandra Pod 記錄檔 (Cloud Logging) 中,您可能會看到類似下列的記錄項目:

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

原因:Java 堆積大小不足

診斷

在 Apigee Hybrid 安裝的 overrides.yaml 檔案中,maxHeapSize 未設為足夠的值。這可能是因為未套用製作設定,或是目前的輸送量需要高於平常的設定。

解析度

如要解決這個問題,請視情況調整 maxHeapSizememory ,然後 套用變更

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

如果使用預設的正式版設定仍有問題,請嘗試進一步提高值。請注意,您也必須確保節點容量、 磁碟總處理量 網路頻寬足夠。

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

如果 16 GB 堆積設定仍無法應付流量,請繼續進行 水平擴展

必須收集診斷資訊

如果按照上述操作說明後問題仍未解決,請收集下列診斷資訊,然後與 Google Cloud Customer Care 團隊聯絡:

除了系統可能要求您提供的資料外,請使用下列指令,從所有 Cassandra Pod 收集診斷資料:

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

壓縮檔案,並在客服案件中提供:

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