Cassandra Java 堆積空間問題

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

問題

Cassandra 堆積問題可能會導致 Apigee 混合式 Proxy 執行速度變慢,甚至導致 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*