Ssh로 ec2에 접속하여 build를 할 때 아무리 기다려도 빌드가 끝나지 않는 경우가 있다.
git clone으로 프로젝트를 가져와 빌드했는데 빌드가 끝나지 않길래 환경설정을 잘못해 줘서 충돌이 난 건가 의심했는데 알고 보니의 메모리가 부족해서 일어난 문제였다.
Aws ec2 프리티어인 t2.micro의 경우 램이 1gb이다. 1기가 가지고 스프링을 빌드하기엔 역부족이었나 보다.메모리가 더 큰 인스턴스를 사용하면 깔끔하게 해결할 수 있지만 과금 폭탄이 무섭기 때문에 차선책을 이용하여 해결했다.
바로 가상메모리를 사용하는 방법이다.
Ec2의 디스크 용량을 램처럼 사용할 수 있다. 리눅스에서는 SWAP 메모리를 지정하여 HDD의 일부를 RAM처럼 사용할 수 있게 해 준다. 램을 증설한 효과를 얻는 것이다.
aws에서는 위와 같이 스왑 메모리의 크기(스왑 공간)를 설정하는 것을 추천한다.
해결 방법
1. ec2의 인스턴스에 접속한다.
2. swap 메모리의 크기를 정하고 할당한다.
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
위 명령어의 의미는 128Mb씩 16개의 공간을 만들어 할당한다는 것이다. t2.micro의 램이 1gb여서 2배인 2gb를 할당하였다.
3. 스왑파일에 대한 권한 부여.
sudo chmod 600 /swapfile
4. Linux의 스왑 영역 지정.
sudo mkswap /swapfile
5. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 바로 사용할 수 있도록 만듦.
sudo swapon /swapfile
6. 부팅 시 스왑 파일을 활성화하도록 설정.
sudo vi /etc/fstab
으로 파일을 열고, 해당 파일의 끝에 아래 내용을 추가한 후 저장한다.
/swapfile swap swap defaults 0 0
이러면 끝이다. free 명령어를 통해 잘 할당되었는지 확인할 수 있다. 할당한 이후 바로 free를 실행하면 아래 Swap: 부분에 0 0 0이 나온다. 잘 된 것이니 걱정 말고 다시 빌드를 시작하면 된다.
물론 HDD를 쓰기 때문에 속도는 상대적으로 좀 느리다.
'Knowledge' 카테고리의 다른 글
[Github] Github Release 기능 (1) | 2024.03.22 |
---|---|
HTTP 상태코드 (1) | 2023.04.24 |
[RPi] 라즈베리파이 블루투스 스피커 연결 (0) | 2022.11.30 |
[VNC] 내 컴퓨터에서 원격 컴퓨터로 파일 옮기기 (0) | 2022.11.30 |
[VNC] 라즈베리파이 화면 해상도 설정 (0) | 2022.11.30 |