처음 mysql 컨테이너를 추가할 때 compose 파일을 사용하지 않고 네트워크만 맞춰 컨테이너를 새로 만들었는데 Putty가 갑자기 멈춰서 명령어를 칠 수 없고 AWS 를 통한 연결로 접속이 되지 않았다.
사유를 찾아보니 메모리 부족으로 인한 서버 멈춤 현상이었고 Swap을 통해 메모리를 할당하여 해결하였다.
※ 멈춘 서버를 다시 기동하려면 AWS - EC2 - 인스턴스 상태 - 재부팅하고 기다려주면 된다.
메모리 이슈가 아닐 수 도 있으니 로그부터 확인해보는 것이 좋다. 나는 로그에 아무런 문제가없었어서 사유 찾는데 좀 걸렸다.
- 컨테이너
docker logs 컨테이너명
- 인스턴스
인스턴스 상태 - 모니터링 및 문제 해결 - 시스템 로그 가져오기
메모리 공간 부족 방지를 위한 임시 방편으로 하드 디스크의 일부를 RAM 처럼 사용할 수 있게 만드는 것이다. 리눅스 커널은 실제 메모리에 올라와 있는 메모리 불록 중 당장 사용하지 않는 것을 디스크에 저장하고 이를 통해 사용 가능한 메모리 영역을 늘린다.
메모리가 부족하던 옛날에 사용하는 방법이라고 하는데 AWS에서 프리티어로 사용중인 서버라 메모리가 넉넉하지 않으니 사용하는 방법이라고 한다.
AWS 에 swap 사용 공식 문서가 있다. > [공식 문서](https://repost.aws/ko/knowledge-center/ec2-memory-swap-file)
free -m
순서대로 명령어를 입력해주면 된다!
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
7번까지 진행하고 free -m 명령어를 입력해주면 0 이었던 스왑 메모리에 값이 할당 된 것을 볼 수 있다.
서버 재부팅을 하면서 컨테이너가 전부 중지 되었기 때문에 start 명령어를 통해 다시 실행 시켜준다.
docker start {컨테이너명}
상태가 up 으로 유지되면 해결!