문제
EC2에 서버를 업로드하고 실행하는 과정에서 port 22: Operation timed out 이 발생하며 EC2 멈춤현상을 발견했습니다.
원인
EC2 프리티어의 RAM 용량은 1GB 정도라 메모리가 부족해 서버가 멈춰버리는 것이 원인이었습니다.
이 원인으로 SSH 접속이 불가능해져 인스턴스를 중지시키고 재시작해야하했었습니다.
해결
구글 검색을 해보니 SWAP 가상 메모리를 사용하여 메모리를 늘려줄 수 있다고 해서 찾아봤습니다.
이 가상 메모리는 메모리가 부족할 때 디스크 공간을 가져와서 메모리처럼 사용할 수 있게 해준다고합니다.
따라서 이 기능을 사용해 메모리부족 현상을 해결할 수 있을것 같았습니다.
과정
이미 EC2가 작동이 불가능하다면 먼저 인스턴스를 중지시키고 다시 실행시켜 ssh 접속을 하고 아래와 같이 진행해줍니다.
1. SWAP 메모리 추가
sudo dd if=/dev/zero of=/swapMem bs=128M count=16
2GB의 SWAP 메모리를 생성해줍니다.
2. 권한 부여
sudo chmod 600 /swapMem
3. SWAP 메모리를 SWAP 파일로 포맷
sudo mkswap /swapMem
4. SWAP 메모리 활성화
sudo swapon /swapMem
5. SWAP 메모리 자동 활성화
sudo vi /etc/fstab
해당 명령어를 작성하면 파일 편집에 들어갑니다.
- 'A' 를 눌러 파일 편집을 시작합니다.
- 작성되어있는 마지막 행 밑에 /swapfile swap swap defaults 0 0 를 추가로 작성합니다.
- ESC를 누르면 가장 밑에 INSERT 라고 표시됩니다.
- 콜론(:) 을 누르고 wq + 엔터를 누르면 파일 편집이 완성됩니다.
6. 메모리 확인
sudo free -h
2GB로 증가했다면 성공입니다.
EC2에서 서버를 다시 실행시키면 정상 작동 되는것을 확인할 수 있습니다.