您正在查看 Apigee 和 Apigee 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
未设置为一个足够的值。这可能是因为未应用生产设置,或当前吞吐量要求设置比平常高。
解决方法
如需解决此问题,请相应地调整 maxHeapSize
和 memory
,然后应用更改:
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*