jvm heap 메모리 에러

박우영·2023년 5월 18일
0

트러블 슈팅

목록 보기
11/19

kafka 도입함에 있어 주키퍼와 카프카를 compose 하여 실행 시켰더니 kafka 가 실행되지 않는 오류가 발생했습니다.

docker ps -a

실행이 되지않아 log를 확인해보니

afka 02:11:11.67 WARN  ==> You set the environment variable ALLOW_PLAINTEXT_LISTENER=yes. For safety reasons, do not use this flag in a production environment.
kafka 02:11:11.70 INFO  ==> Initializing Kafka...
kafka 02:11:11.72 INFO  ==> No injected configuration files found, creating default config files
kafka 02:11:11.95 INFO  ==> Initializing KRaft...
kafka 02:11:11.95 WARN  ==> KAFKA_KRAFT_CLUSTER_ID not set - If using multiple nodes then you must use the same Cluster ID for each one
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Not enough space' (errno=12)

도커 컨테이너 내부의 메모리 할당량보다 여기에 사용되는 메모리가 더 많아서 생기는 문제

  • docker stats [컨테이너이름] 으로 확인 여러가지도 확인가능하다.

1. jvm 힙메모리 설정

kafka는 jvm 으로 만들어줬기때문에 jvm 에서 환경변수를 넣어줘 힙메모리를 설정 하면 될거같았고 jvm 환경변수 설정을 docker-compose.yml 에 넣어보기로 했다.

설정을 해줬고 실행
` - KAFKA_HEAP_OPTS="-Xmx256M -Xms256M"
을 해줬는데 실행이 안된다...

2. ec2 가상메모리 설정

예전에 ec2 free tier 에서 스프링부트를 띄우는데 안돌아가서 스왑설정 해줬다는 글을 봤었다. 그래서 가상메모리 swap 설정을 해보기로 했다.

이건 자주 쓰일거같아 따로 정리를 하였다. 자세한 내용은 아래 링크 참고
가상메모리

회고


맨처음 ec2를 시작할때 알아냈던 정보인데 따로 기록을 해두지않아 잊고 있었다.
물론 스케일업, 스케일 아웃하는 방법도 있지만 현재로써는 인스턴스 1개로 관리하는것이 제일 좋다고 생각되어 가상메모리 기법을 사용 하였습니다.

0개의 댓글