갑자기 EC2 배포 주소로 연결이 안되는 오류 해결

조수빈·2023년 7월 31일
0

swiftER

목록 보기
2/2
post-thumbnail
post-custom-banner

오류의 내용

EC2 서버로 배포한 서비스가 갑자기 연결이 안된다. 배포 주소로 들어가면 연결을 거부했다는 메세지만 계속 출력되는 것이다. 며칠 전만 해도 잘 작동하는 걸 직접 확인했는데 너무 당황스러웠다. 일단 인스턴스에 문제가 생겼는지 확인하기 위해서 다음의 사항들을 확인해보았다:

  1. 인스턴스 상태가 running인지 확인
  2. 보안 그룹 인바운드/아웃바운드 규칙 확인
  3. IP 주소 변경 여부 확인
  4. 인스턴스 시스템 로그 확인

오류의 이유

확인 결과 인스턴스는 문제 없이 구동 중이었다. 오류의 이유도 모른 채 ‘EC2 연결 오류’로 구글링만 하염 없이 해도 대부분은 인스턴스 문제에 관한 팁이어서 별 도움이 되지 않았다. 그러다 번뜩 떠오른 것이 AWS 웹사이트에서 확인 가능한 인스턴스 콘솔 스크린샷이었다. 인스턴스 콘솔 스크린샷을 보니 그제야 오류의 원인을 파악할 수 있었다:

메모리가 부족해서 서비스를 강제로 종료한 것이었다. AWS 공식 홈페이지에 따르면 out of memory 발생 시 Linux Out Of Memory(OOM) 매니저가 호출되고, 이 매니저가 프로세스들을 강제 종료시킨다고 한다.1\tt{^{1}} 나는 다행히 해당 인스턴스에서 swiftER 서비스만 구동 중이었기에 서비스가 강제 종료되는 선에서 끝났지만 여러 서비스를 배포/구동 중이었다면 연쇄적으로 피해가 발생할 수도 있는 상황이었다. EC2 인스턴스는 기본적으로 스왑 공간을 할당받지 않아서 직접 스왑 파일을 생성해야 한다. 공식 홈페이지에서 설명하는 스왑 파일 생성 방법은 다음과 같다:

스왑 파일 생성 방법

1.   dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다.

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

2.    스왑 파일의 읽기 및 쓰기 권한을 업데이트합니다.

$ sudo chmod 600 /swapfile

3.    Linux 스왑 영역을 설정합니다.

$ sudo mkswap /swapfile

4.    스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 합니다.

$ sudo swapon /swapfile

5.    프로시저가 성공적인지 확인합니다.

$ sudo swapon -s

6.    /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 시작합니다. 먼저, 편집기에서 파일을 엽니다.

$ sudo vi /etc/fstab

파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료합니다.

해결

위의 방식대로 하니 서비스가 다시 정상적으로 구동하기 시작했다.


1) https://repost.aws/knowledge-center/ec2-linux-prevent-over-utilization

profile
신입 풀스택 웹개발자로 일하고 있습니다
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

이런 유용한 정보를 나눠주셔서 감사합니다.

답글 달기