개발

[cassandra] Maximum memory usage reached (1073741824), cannot allocate chunk of 1048576

eun2ce 2022. 9. 21. 08:40

카산드라에서 읽을 때 sstable을 디스크에서 메모리로 압축을 풀어서 올리는데 이때 메모리 부족이 예상되면 나오는 메시지입니다.

 

카산드라가 자체적으로 메모리 정리를 하기 때문에 read 가 느려질 수 있으나 동작에 문제는 되지 않습니다.

 

해결 방법

  • 서버 메모리가 실제로 부족한 것이 맞는지 확인
  • 실제로 부족한 것이라면 그에 맞는 대처가 필요
  • 그런게 아니라면 카산드라 설정에서 메모리를 적절히 설정하여 개선
    • bitnami cassandra helm chart를 이용할 경우 /opt/bitnami/cassandra/conf 디렉터리에서 설정된 config 값 확인 가능
    •  
#MAX_HEAP_SIZE=”xxxG” 
#HEAP_NEWSIZE=”xxxG”

 

 

카산드라 설정 파일 관련 설명

 

카산드라의 기본 설정파일은 cassandra.yaml

1개의 노드로 구성할 수 있는 클러스터에 적합하게 설정되어 있음 (2개 이상 노드로 운영할 경우에는 다양한 추가 세팅 필요)

클러스터로 구성하기 위해서는 일부 설정값을 입력이 필요합니다.

 

- cassandra.yaml : 카산드라의 기본 셋팅 파일

- cassandra-env.sh : 카산드라에서 사용하는 환경 변수 세팅

- cassandra-rackdc.properties or cassandra-topology.properties : 클러스터의 rack, datacenter 설정 

- logback.xml : 로깅 레벨 설정

- jvm-* : JVM 관련 설정

- commitlog_archiving.properties : commitlog를 위한 아카이빙 파라미터 설정

 

추가적으로 예제 설정 파일을 conf에서 확인할 수 있습니다.

 

- metrics-reporter-config-sample.yaml : metric-report가 수집하는 설정 예제

- cqlshrc.sample : cql에 대한 예제