Cassandra Java ヒープスペースの問題

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
このトピックに対応する Apigee Edge のドキュメントはありません。

症状

Cassandra ヒープの問題により、Apigee ハイブリッド プロキシの実行速度が低下することや、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 ハイブリッド インストールの 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 カスタマーケアにご連絡ください。

提出を求められる可能性のある通常のデータに加えて、次のコマンドを使用して、すべての 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*