본문 바로가기

main/NCP Service

npm build 시 NCP/AWS 등 클라우드 서버가 멈출 때, 죽을 때

내 터미널이 한글 버전인건지 처음에는 ..죽었음 이라는 말에 이게 도대체 뭐냐며 ㅋㅋㅋ 적잖이 당황했다.

 

구글링해보니 클라우드 서버의 성능 때문에 react 빌드 시 메모리 부족으로 프로세스가 죽어버리는 현상이라고 한다.

해결하기 위해서는 성능을 업그레이드 하면 되지만 일단 임시방편으로 디스크의 일부를 메모리에 땡겨 쓰도록 설정해주었다.

 

sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile

스왑 메모리를 2GB로 생성해서 메모리 부족으로 인한 빌드 실패를 막는다.

 

추후에 해제하고 싶을 때에는?

sudo swapoff -v /mnt/swapfile
sudo rm /mnt/swapfile

위와 같이 입력해주면 된다.

 

 


처음 build 중 죽었을 때는 이렇게 메모리를 건드리지 않고 다른 방법을 통해 해결했었다.

어차피 클라우드에 올라가는 건 빌드된 정적 파일이므로,

메인 컴퓨터에서 npm export까지 완료한 후 그 정적 파일들을 서버에 업로드하여 서버에서 띄웠다.

 

하지만 정적 파일을 업로드해서 웹에 띄울 경우에 바로 확인할 수 없었던 메타 태그 적용 문제를 해결해나가면서

Next.js의 getServerSideProps를 사용해서 테스트해보고 싶었다.

이 함수는 export 하여 정적 파일을 서버에 띄우는 것이 아닌 프론트엔드도 자체 포트에서 돌릴 때 사용할 수 있는 것이었다.

(= 서버에서의 build가 필요한!)

 

무튼 이런 과정을 거치면서 실제 배포되어있는 웹 서비스들은 보통 어떤 식으로 배포되어있는지 궁금해졌다.

검색을 좀 해보긴 했지만 아직 어디서 어떻게 알아봐야 할지 잘 모르겠다.

 

일단 잊지 않도록 끄적여놓고.. 찾아 봐야지.