Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기 N
    • 부스트캠프
    • iOS N
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • 부스트캠프
  • jekyll
  • ImageResource
  • swift
  • 소프트웨어공학
  • constraint
  • Swift5.7
  • 오블완
  • boj
  • 알고리즘
  • SwiftUI
  • 티스토리챌린지
  • 소프트웨어 테스트
  • AVAudioSession
  • CS
  • Optional
  • image
  • 소프트웨어 공학
  • guard
  • alamofire
  • Concurrency
  • authenticationinterceptor
  • 모듈화
  • Python
  • AutoLayout
  • if let
  • Git
  • MVC
  • ios
  • 백준

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
Backend

AWS EC2 npm run build 시 멈추는 문제

AWS EC2 npm run build 시 멈추는 문제
Backend

AWS EC2 npm run build 시 멈추는 문제

2025. 5. 19. 15:23

개인 프로젝트 서버를 AWS EC2 인스턴스에 배포하는 과정에서, 서버가 중간에 멈추는 문제를 마주했습니다.

제가 사용 중인 인스턴스는 t2.micro 로, 즉 프리티어에서 제공되는 최소 사양 인스턴스였습니다.

  • vCPU: 1개
  • RAM: 1GB

서버를 실행했을 때 반응이 없어 AWS 대시보드에서 확인해보니, CPU 사용량이 100%에 가까운 상태로 장시간 유지됨을 확인할 수 있었습니다.

대시보드 CPU 사용량 이미지

 

또한 인스턴스에 접속해 top 명령어로 리소스 사용량을 확인한 결과, DB 서버(mysqld)가 메모리의 40% 이상을 점유하고 있는 상황으로 가용 메모리가 약 150MB 밖에 되지 않는 상황이었습니다.

top 명령어

 

이러한 리소스 부족으로 인해 Nest.js 서버를 실행하는 명령어인 npm run start 나, npm run build 시 서버가 멈추거나 오래 걸리는 문제가 발생하고 있었습니다.

 

Nest.js는 Node.js 기반 서버사이드 프레임워크로, npm install 시 많은 패키지들을 의존성으로 가져오고, 실행 시에도 런타임/컴파일 메모리 요구량이 존재합니다.

t2.micro는 RAM이 1GB뿐이라 여유 메모리가 거의 없어, 스레드가 바빠지고 blocking이 일어나 서버가 멈출 수 있습니다.

 

가장 쉬운 해결 방법으로는 인스턴스 스펙을 올리는 것이지만, 프로젝트 규모가 작기에 t2.micro를 유지하면서 해결 방법을 찾기로 했습니다.

비슷한 문제를 겪는 사례들이 있었고, 가상 메모리를 활용해 문제를 해결하는 방식을 사용할 수 있었습니다.

아래는 Ubuntu 에서 가상메모리를 할당하는 명령어입니다.


  
# 1GB 스왑공간 생성
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
# 스왑 공간 활성화
sudo mkswap /swapfile
sudo swapon /swapfile
# 스왑 공간 확인
sudo swapon --show
sudo free -h
# 부팅 시 자동 적용
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

재할당 하려면 아래와 같이 기존 스왑 공간을 제거하고 재할당할 수 있습니다.


  
# 기존 스왑 공간 비활성화, 제거
sudo swapoff /swapfile
sudo rm /swapfile
# 새 용량으로 할당
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
# 스왑 공간 활성화
sudo mkswap /swapfile
sudo swapon /swapfile

결과

Nest.js + MySQL 띄웠을 때 기준, 물리 메모리 400MB, 가상 메모리 400MB 정도를 사용하고 있는 걸 알 수 있습니다.

참고

https://stackoverflow.com/questions/66693201/npm-install-hangs-forever-in-ec2
https://marklee1117.tistory.com/163

저작자표시 (새창열림)
  • 결과
  • 참고
Dev.YoungKyu
Dev.YoungKyu
iOS를 공부하고 있습니다

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.