FE

[서버] Next.js EC2 배포 서비스 죽는 현상

올바른생활부터 2025. 1. 24. 22:49
728x90
반응형
SMALL

목차

1. 문제 발생

2. 문제에 대한 정보 수집

3. 원인 추론

4. 문제 해결

 

1. 문제 발생

  • Next.js를 EC2로 배포한 서버에서 동시 접속자가 3명 이상일 때, CPU 사용률이 33%까지 급증하면서 서버가 멈추는 문제가 발생했습니다. 그 결과, 사용자들은 502 Bad Gateway 오류가 발생하겠되었다.

2. 문제에 대한 정보 수집

  • EC2의 무료 티어(Free Tier)로 서버를 배포했기 때문에 이게 문제일까 싶어서, 팀원 한 분이 백엔드 멘토님께 문의드렸습니다. 멘토님께서는 RAM 문제일 가능성이 높다며, 서버의 RAM 메모리가 충분한지 확인해 보라고 조언해주셨다.

RAM 메모리란 무엇인가

  • RAM은 서버에서 사용되는 작업 메모리이다. 서버가 많은 요청을 처리할 때, RAM이 부족하면 과부하가 발생해서 서버가 멈추는 일이 생길 수 있다.
  • t2.micro 인스턴스는 1GB RAM만 제공하므로, 자동화 배포나 여러 사용자가 동시에 접속할 경우 RAM이 부족해질 수 있다.

3. 원인 추론

  • EC2 Free Tier로 배포한 서버의 RAM 용량이 1GB로 너무 작다는 것이 문제였다.
  • GitHub Action와 같은 자동화 배포 시스템과 함께 여러 사용자 요청을 처리하다 보니, RAM이 부족해 서버가 죽는 현상이 발생한 것 같다.

EC2 인스턴스 유형에 대한 정보

해결 방안: SWAP 메모리

  • SWAP 메모리는 RAM이 부족할 때, 하드디스크의 일부를 임시로 사용해 RAM처럼 작동하게 하는 방법이 있다. 이 방법을 사용하면 RAM 용량을 늘린 것처럼 효과를 볼 수 있다.

4. 문제 해결

  • SWAP 메모리 설정을 통해 RAM 용량을 늘리기로 했다.

AWS SWAP 메모리 설정 방법

SWAP 메모리 설정 방법

  1. dd 명령어로 SWAP 메모리를 설정합니다. 아래 명령어는 2GB의 SWAP 메모리를 할당하는 방법이에요.

sudo dd if=/dev/zero of=/swapfile bs=128M count=16
  • 이 명령어는 128MB씩 16개의 블록을 할당해서 총 2GB의 SWAP 메모리를 만드는 것이에요.

SWAP 파일의 권한을 설정합니다.

sudo chmod 600 /swapfile

 

2. SWAP 영역을 설정합니다.

sudo chmod 600 /swapfile

3. SWAP 파일을 활성화합니다.

sudo mkswap /swapfile

4. 설정이 성공했는지 확인합니다.

sudo swapon -s

5. 부팅할 때마다 SWAP 파일이 자동으로 활성화되도록 /etc/fstab 파일을 편집합니다.

sudo vi /etc/fstab
  • 아래와 같은 줄을 추가하고 저장합니다.
/swapfile swap swap defaults 0 0
  • 다음과 같이 SWAP 메모리가 정상적으로 추가되었는지 확인할 수 있었다.

  • SWAP 메모리를 적용해 서버의 RAM 용량 부족 문제를 해결했고, 서버가 멈추는 현상이 사라졌습니다. 이제는 동시 접속자가 많아도 서버가 더 이상 터지지 않는다.
 
 
728x90
반응형
LIST