본문 바로가기

Study/GW

[AWS] 에러해결 - 인스턴스 연결성 검사 실패, 메모리 부족

갑자기 ssh 접속이 되지 않아 aws EC2 콘솔에서 확인해보니, 상태 검사 에서 1/2개 검사 통과 라는 표시가 있었다.

 

operation timed out 에러

 

EC2 콘솔 > 인스턴스

 

인스턴스 > 상태 및 경보 메뉴에 들어가보니, 인스턴스 연결성 검사 실패가 원인이였다. 

 

구글에 해당 에러 해결 사례를 검색해보니, 시스템 로그 가져오기에서 에러 원인을 파악하는 것 같았다.

나도 에러를 확인하기 위해 먼저 EC2 서버 재부팅 후 로그를 봐도 도저히 에러 문구에 해당하는 내용을 찾지 못했다. 

 

 

 

인스턴스 > 시스템 로그 가져오기

 

그래서 위 사진 속, 시스템 로그 페이지에서 아래쪽에 있는 연결 을 클릭해보았다. 

 

 

 

EC2 직렬 콘솔 연결 화면

 

EC2 직렬 콘솔은 또 뭘까..? 

지금 이 계정이 EC2 직렬 콘솔을 사용할 권한이 없다고 하니까, 권한을 줘야겠지. Manage access 를 클릭한다.

 

 

EC2 직렬 콘솔 관리 화면

 

'허용' 에 체크!

 

 

 

EC2 직렬 콘솔 엑세스 허용 완료

 

 

 

 

갑자기 검사 통과...?

 

 

다시 EC2 콘솔 화면으로 돌아가 인스턴스 > 상태 및 경보 메뉴를 보니, 아까의 원인이 해결되었다. ⁉️ 터미널에서 SSH 연결도 잘 된다. 

 

ssh 연결 성공!

 

 

nohup으로 백그라운드 실행 돌린게 문제가 된건지, 로그 쌓는데 메모리가 부족한건지.. 대체 뭐가 문제일까 싶었는데 AWS쪽 권한 이슈인 것 같다. 진작 설정해둘 수 있었던 문제 같은데, 어쨌든 해결 완료(?) 해서 다행이다 ㅎㅎ

 

 

 

 


+ 6/14 추가

 

👉 swap 메모리 할당하기

 

다시 동일한 이슈가 발생했다. 로그를 살펴보니 이런 에러를 찾을 수 있었다. (아마 이전에도 있었는데 내가 못찾은 것 같다..;)

 

 

 

" ...  Datasource DataSourceEc2Local  ...  Out of memory: Killed process  ...  (mysqld)  ...  "

아마 Spring 서버와 Ec2 에서 RDS 연결 때문에 메모리 부족 현상이 발생한 것 같다. 

 

 

 

그리고 위의 그래프를 보면, CPU 사용률이 99.7% 까지 올라간 것을 확인할 수 있다. 아무래도 프리티어로 사용하다 보면 RAM이 1GB밖에 되지 않아 메모리가 많이 부족한 것 같다. 

 

이럴 때 해결할 수 있는 방법을 찾았다. Swap 메모리 할당하기! 

 

 


 

 

1. 우선 EC2 서버를 재시작 한다. (지금 SSH 접근이 안되는 상황이라면)

 

2. 서버에 아래 명령어를 입력한다. 

# dd 명령어로 swap 메모리 할당
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16

# swap 파일 권한 업데이트
$ sudo chmod 600 /swapfile

# linux 스왑 영역 설정
$ sudo mkswap /swapfile

# 스왑 공간에 스왑 파일을 추가해, 스왑 파일을 즉시 사용할 수 있도록 함
$ sudo swapon /swapfile

# 절차 성공 확인
$ sudo swapon -s

# 부팅시 스왑 파일 활성화 설정
$ sudo vi /etc/fstab

''' 파일 가장 아랫줄에 아래 내용 입력 '''
/swapfile swap swap defaults 0 0

 

 

그리고 이전에 만들었던 start.sh 파일을 실행하면 다시 Spring Boot 서버가 실행된다. 

재부팅

 

 

 

 

Swap 이란?

 

RAM 메모리가 가득 찼지만, 메모리가 더 필요할 때 디스크 공간을 이용해 부족한 메모리를 대체할 수 있는 공간을 의미한다. 

즉, 하드디스크의 디스크 공간을 메모리처럼 사용하는 '가상 메모리 방식' 이다. 

 

하드디스크를 이용하기에 속도는 떨어지지만, 실제 메모리가 부족한 상황에 대처할 방법이 된다. 

 

 

 

참고: https://white-world.tistory.com/408

반응형