검색 기능을 위해 EC2를 분리하여, elastic search 를 통해 검색 결과를 리턴하기로 하였다.
docker를 통해 elastic search와 flask server를 ec2에 업로드할 생각이었다.
하지만 es 컨테이너가 바로 죽는 것을 확인하였다.
에러 메시지는
ERROR: Elasticsearch died while starting up, with exit code 137
Common Causes:
Insufficient Memory Allocation:
Elasticsearch requires a significant amount of memory, especially for its JVM heap. If the allocated memory to the Elasticsearch process or its container is too low, it can lead to OOM errors and termination.
결국 es를 실행하기에는 메모리가 부족하다는 결론이다.
난 이제 처음으로 ec2에 컨테이너를 올리기만 했는데...

GPT 역시 t2.micro 스펙의 ec2로 띄울 수 없다고 단호히 말했다.
OOM 현상을 해결하기 위해, docker-compose 내 es_java_ops를 설정하였다.
Elasticsearch는 내부적으로 Java 애플리케이션이라 메모리 사용량, GC 동작, 힙 크기 등을 Java 옵션으로 조절하는데, 그걸 Docker 컨테이너 환경에서 설정할 수 있도록 만든 변수이다.
// docker-compose.yml
ES_JAVA_OPTS=-Xms512m -Xmx512m
다음 옵션의 의미는, 컨테이너를 실행할 때
-Xms512m: JVM이 최소 사용할 힙 메모리를 512MB로 설정
-Xmx512m: JVM이 최대 사용할 힙 메모리를 512MB로 제한하여
Elasticsearch가 메모리 부족으로 터지지 않도록, 실행 시 할당받을 힙 메모리 양을 직접 조절하는 것이다.

swap 메모리 설정 후 다시 컨테이너를 실행하자, 죽지 않고 실행 중인 것을 볼 수 있다.
