Cassandra Java 힙 공간 문제

ApigeeApigee Hybrid 문서입니다.
이 주제에 해당하는 Apigee Edge 문서는 없습니다.

증상

Cassandra 힙 문제로 인해 Apigee Hybrid 프록시 실행 속도가 느려지거나 Datastore 오류가 발생할 수 있습니다. 증상이 나타나기 전이더라도 로그가 조기 지표가 되는 경우가 있습니다.

오류 메시지

Cassandra 포드 로그(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

16GB 힙 설정이 트래픽 볼륨에 계속 부족하면 수평 확장을 계속합니다.

진단 정보 수집 필요

위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Google Cloud Customer Care에 문의하세요.

요청을 받은 일반적인 데이터 외에도 다음 명령어를 사용하여 모든 Cassandra 포드에서 진단 데이터를 수집합니다.

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*