AWS EC2 멈춤 현상 (메모리 이슈)
본문 바로가기

Trouble Shooting

AWS EC2 멈춤 현상 (메모리 이슈)

Git Repo : https://github.com/2018007956/Preddit/pull/55

[문제 상황]

- 회원가입 버튼 누르면 아무 동작도 하지 않고, 아래와 같은 에러가 콘솔 출력됨


- 그리고 시간이 지나면 아래와 같이 인스턴스 끊김


   - 인스턴스 중지했다가 시작하면 다시 접속 가능
   - pm2 다시 켜야됨
- 연결 되다가 조금 시간이 지나면 인스턴스 연결 끊김



[원인 분석]
1. 디스크 용량 확인 -> 차이 없음
2. 메모리 용량 확인 
   - htop으로 메모리 사용량을 확인해보니 서버에서 여러 ts-node 프로세스가 동시에 실행되고 있어 CPU와 메모리가 과부하 상태에 있다는 것을 발견



[해결 과정]
- 적용 가능한 해결 방법은 다음과 같았음
   - ts-node 대신 컴파일된 JavaScript 파일을 사용
   - 중복된 프로세스를 제거
   - 필요시 인스턴스의 자원을 업그레이드
   - 스왑 메모리를 설정해 메모리 부족 문제를 예방 -> 적용!
- 위 방법들 중 스왑 메모리를 설정하는 방법 적용해봄 [참고]

# 블럭사이즈가 1MB, 블럭 갯수가 2000K 인 빈파일을 만들기 (2000000 = 2GB)
sudo dd if=/dev/zero of=/root/swapfile bs=1k count=2000000 conv=excl

# swapfile의 권한 생성
sudo chmod 600 /root/swapfile

# 스완 파일로 설정
sudo mkswap /root/swapfile

# 스왑 파일 실행
sudo swapon /root/swapfile

# 메모리 확인하면 Swap에 약 2G가 생성된 것을 확인 가능
free -h

# 인스턴스를 재시작 할 때 자동으로 swap을 실행시키도록 fstab파일에 값을 추가
sudo vi /etc/fstab
/root/swapfile swap swap auto 0 0



[Result]

배포 성공!