본문 바로가기
OPS(Infra)/AWS

[AWS] ec2 멈춤 현상(docker나 기타 등등의 백그라운드 프로그램 사용 시)

by hwan20c 2022. 11. 9.

테스트 환경에서 테스트를 다 해보고,

 

운영체제가 리눅스로 되어있는 ec2 서버에 docker container(mysql)를 생성 하니, 

 

갑자기 리눅스가 뻑나기 시작하는 것이다.

 

사실 처음에는 프로젝트 빌드타이밍에 뻑이나서 '아니 빌드하는데 이렇게 오래걸려?' 하면서 무한 대기를 했었는데, 

 

그 이후에 서버가 멈춰서 아예 아무것도 쳐지지 않는 것이였다.

 

그래서 서버를 재시작 하고,

 

위에 화면(aws의 ec2 대시보드에서 하실 수 있습니다.) 에서 중지를 누르고 기다리면 되는데, 안 꺼져서 한번 더 누르면 강제중지가 있어서 강제 중지를 했다.

 

(인스턴스는 중지와 시작이 기본입니다. 종료 누르면 서버에 쌓아 놓으신거 다 날라가요.)

(어차피 test니까 한번 날리고 또 해보는것도 좋을듯 ㅎㅎ)

 

아 그리고, 재시작하면 퍼블릭 ipv4 dns가 바뀌니 ssh로 접근할때 바뀐 dns로 접근해야 했다.

 

그래서 서버를 다시 껏다 키고 다시 docker를 실행하는데,

 

docker 실행 명령어(linux)

 

sudo systemctl status docker -> docker 상태 확인(죽었는지 / 살았는지)

sudo systemctl start docker -> docker 실행

sudo systemctl enable docker -> 부팅시에 docker 자동실행

 

실행하자마자 뻑나고 서버가 죽어 버리는 거다. (아오)

 

그래서 현 상태 보고 '이건 빌드 문제가 아니라 메모리 문제다.' 라고 파악한 다음에 메모리를 늘리는 작업에 들어갔다.

 

(시스템 관련 오류는 aws ec2 인스턴스에서 작업 -> 모니터링 문제해결 -> 시스템로그 가져오기에서 보실 수 있습니다.)

 

위의 공식 문서를 들어가면 메모리영역을 늘리는 방법에 대해서 확인할 수 있는데,

 

쉽게 정리를 하자면,

 

dd 명령을 이용해서 루트 파일에 스왑 파일을 생성한다.

 

sudo dd if=/dev/zero of=/swapfile bs=128M count=32

(128M * 32 총 4GB의 스왑영역(메모리영역)을 늘리기로 설정, bs는 블록크기 / count는 블록 수 / 지정한 블록 크기는 내 인스턴스에서 사용 가능한 메모리보다 작아야함.)

 

sudo chmod 600 /swapfile

스왑 파일의 읽기 및 쓰기 권한 업데이트

 

sudo mkswap /swapfile

리눅스 스왑영역 설정

 

sudo swapon /swapfile

스왑 공간에 스왑 파일을 추가하여 즉시 스왑 파일 사용할 수 있게 변경

 

sudo swapon -s

잘 늘어 났는지 확인하는 명령어

 

sudo vi /etc/fstab

vi 편집기로 해당 파일을 열어서

/swapfile swap swap defaults 0 0

해당 text를 파일 마지막줄에 추가해준다.(부팅시에 스왑 파일을 활성화 할 수 있게 해줌.)

 

free -m

이 명령어를 이용해서 swap 영역이 잘 바뀌었는지 확인해본다.

 

이 이후에, docker container 생성하고, tomcat으로 다른 포트의 프로젝트를 돌려도 

 

문제없이 잘 돌아간다...

 

aws놈들이 무료라고 넉넉히 주지 않는 메모리영역이 이런 결과를 초래하게되었다. aws ec2 사랑해요 ㅎㅎ

 

더 이상 서버나 docker container 를 늘릴 생각은 없으니 현재는 이 상황에 만족하는걸로 ...

댓글